Submission #6951278
Source Code Expand
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <deque>
#include <list>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <algorithm>
#include <map>
#include <set>
#include <complex>
#include <cmath>
#include <limits>
#include <cfloat>
#include <climits>
#include <ctime>
#include <cassert>
#include <numeric>
#include <functional>
#include <bitset>
using namespace std;
using lint = long long int;
using ll = long long int;
const lint INF = 1001001001001001LL;
const lint MOD = 1000000007LL;
int di[] = {-1, 0, 1, 0, -1, 1, 1, -1};
int dj[] = {0, 1, 0, -1, 1, 1, -1, -1};
void yes(){ cout << "yes" << endl; }
void Yes(){ cout << "Yes" << endl; }
void YES(){ cout << "YES" << endl; }
void no(){ cout << "no" << endl; }
void No(){ cout << "No" << endl; }
void NO(){ cout << "NO" << endl; }
void possible(){ cout << "possible" << endl; }
void Possible(){ cout << "Possible" << endl; }
void POSSIBLE(){ cout << "POSSIBLE" << endl; }
void impossible(){ cout << "impossible" << endl; }
void Impossible(){ cout << "Impossible" << endl; }
void IMPOSSIBLE(){ cout << "IMPOSSIBLE" << endl; }
#define rep(i,n) for(int i = 0; i < (n); i++)
#define rrep(i,n) for(int i = 1; i <= (n); i++)
#define drep(i,n) for(int i = (n)-1; i >= 0; i--)
#define srep(i,s,t) for(int i = s; i < t; i++)
#define all(a) a.begin(),a.end()
char c[8][8];
bool ok(){
vector<lint> cnt1(20, 0);
vector<lint> cnt2(20, 0);
rep(i, 8){
rep(j, 8){
if(c[i][j] == '.') continue;
cnt1[i + j]++;
cnt2[i - j + 8]++;
}
}
rep(i, 20){
if(cnt1[i] > 1) return false;
if(cnt2[i] > 1) return false;
}
return true;
}
int main(){
rep(i, 8){
rep(j, 8){
cin >> c[i][j];
}
}
vector<lint> col(8, 0);
vector<lint> row(8, 0);
rep(i, 8){
rep(j, 8){
if(c[i][j] == 'Q'){
col[i]++;
row[j]++;
}
}
}
rep(i, 8){
if(col[i] > 1 or row[i] > 1){
cout << "No Answer" << endl;
return 0;
}
}
vector<lint> vec1;
vector<lint> vec2;
rep(i, 8){
if(col[i] == 0) vec1.push_back(i);
if(row[i] == 0) vec2.push_back(i);
}
/*
rep(i, 5) cerr << vec1[i] << " ";
cerr << endl;
rep(i, 5) cerr << vec2[i] << " ";
cerr << endl;
*/
do{
rep(i, 5) c[vec1[i]][vec2[i]] = 'Q';
if(ok()){
rep(i, 8){
rep(j, 8){
cout << c[i][j];
}
cout << endl;
}
return 0;
}
rep(i, 5) c[vec1[i]][vec2[i]] = '.';
}while(next_permutation(all(vec2)));
cout << "No Answer" << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
C - パズルのお手伝い |
User |
monkukui |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2741 Byte |
Status |
AC |
Exec Time |
1 ms |
Memory |
256 KB |
Judge Result
Set Name |
All |
Score / Max Score |
100 / 100 |
Status |
|
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 |