Submission #6505288


Source Code Expand

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

bool valid(vector<int>& q, int i, int dx, int dy)
{
	int N = q.size();
	int x = q[i];
	int y = i;
	x += dx;
	y += dy;
	while (0 <= x && x < N && 0 <= y && y < N) {
		if (q[y] == x) {
			return false;
		}
		x += dx;
		y += dy;
	}
	return true;
}

bool valid(vector<int>& q, int i)
{
	return valid(q, i, -1, -1)
		&& valid(q, i, 0, -1)
		&& valid(q, i, +1, -1);
}

void dfs(vector<int>& q0, vector<int>& q, int i, vector<int>& ans)
{

	if (!ans.empty()) {
		return;
	}
	int N = q.size();
	if (i == N) {
		ans = q;
		return;
	}
	if (q0[i] != N) {
		if (valid(q, i)) {
			dfs(q0, q, i + 1, ans);
		}
		else {
			return;
		}
	}
	else {
		for (int k = 0; k < N; ++k) {
			q[i] = k;
			if (valid(q, i)) {
				dfs(q0, q, i + 1, ans);
			}
		}
	}
}

vector<int> solve(vector<string>& c)
{
	int N = c.size();
	vector<int> q0(N), q(N);
	for (int i = 0; i < N; ++i) {
		if (count(c[i].begin(), c[i].end(), 'Q') > 1) {
			return {};
		}
		q0[i] = find(c[i].begin(), c[i].end(), 'Q') - c[i].begin();
	}
	q = q0;
	vector<int> ans;
	dfs(q0, q, 0, ans);
	return ans;
}

int main()
{
	int N = 8;
	vector<string> c(N);
	for (auto& x : c) {
		cin >> x;
	}
	auto ans = solve(c);
	if (ans.empty()) {
		cout << "No Answer" << endl;
	}
	else {
		for (int i = 0; i < N; ++i) {
			string s(N, '.');
			s[ans[i]] = 'Q';
			cout << s << endl;
		}
	}
}

Submission Info

Submission Time
Task C - パズルのお手伝い
User luogu_bot5
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1519 Byte
Status AC
Exec Time 1 ms
Memory 256 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 42
Set Name Test Cases
All 00_sample1.txt, 00_sample2.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 01_rnd_20.txt, 01_rnd_21.txt, 01_rnd_22.txt, 01_rnd_23.txt, 01_rnd_24.txt, 01_rnd_25.txt, 01_rnd_26.txt, 01_rnd_27.txt, 01_rnd_28.txt, 01_rnd_29.txt, 01_rnd_30.txt, 01_rnd_31.txt, 01_rnd_32.txt, 01_rnd_33.txt, 01_rnd_34.txt, 01_rnd_35.txt, 01_rnd_36.txt, 01_rnd_37.txt, 01_rnd_38.txt, 01_rnd_39.txt
Case Name Status Exec Time Memory
00_sample1.txt AC 1 ms 256 KB
00_sample2.txt AC 1 ms 256 KB
01_rnd_00.txt AC 1 ms 256 KB
01_rnd_01.txt AC 1 ms 256 KB
01_rnd_02.txt AC 1 ms 256 KB
01_rnd_03.txt AC 1 ms 256 KB
01_rnd_04.txt AC 1 ms 256 KB
01_rnd_05.txt AC 1 ms 256 KB
01_rnd_06.txt AC 1 ms 256 KB
01_rnd_07.txt AC 1 ms 256 KB
01_rnd_08.txt AC 1 ms 256 KB
01_rnd_09.txt AC 1 ms 256 KB
01_rnd_10.txt AC 1 ms 256 KB
01_rnd_11.txt AC 1 ms 256 KB
01_rnd_12.txt AC 1 ms 256 KB
01_rnd_13.txt AC 1 ms 256 KB
01_rnd_14.txt AC 1 ms 256 KB
01_rnd_15.txt AC 1 ms 256 KB
01_rnd_16.txt AC 1 ms 256 KB
01_rnd_17.txt AC 1 ms 256 KB
01_rnd_18.txt AC 1 ms 256 KB
01_rnd_19.txt AC 1 ms 256 KB
01_rnd_20.txt AC 1 ms 256 KB
01_rnd_21.txt AC 1 ms 256 KB
01_rnd_22.txt AC 1 ms 256 KB
01_rnd_23.txt AC 1 ms 256 KB
01_rnd_24.txt AC 1 ms 256 KB
01_rnd_25.txt AC 1 ms 256 KB
01_rnd_26.txt AC 1 ms 256 KB
01_rnd_27.txt AC 1 ms 256 KB
01_rnd_28.txt AC 1 ms 256 KB
01_rnd_29.txt AC 1 ms 256 KB
01_rnd_30.txt AC 1 ms 256 KB
01_rnd_31.txt AC 1 ms 256 KB
01_rnd_32.txt AC 1 ms 256 KB
01_rnd_33.txt AC 1 ms 256 KB
01_rnd_34.txt AC 1 ms 256 KB
01_rnd_35.txt AC 1 ms 256 KB
01_rnd_36.txt AC 1 ms 256 KB
01_rnd_37.txt AC 1 ms 256 KB
01_rnd_38.txt AC 1 ms 256 KB
01_rnd_39.txt AC 1 ms 256 KB