Submission #1179925


Source Code Expand

#include <iostream>
#include <vector>
using namespace std;
typedef long long lli;
int dx[] = {1,1,0,-1,-1,-1,0,1};
int dy[] = {0,1,1,1,0,-1,-1,-1};
vector<string> c(8);
vector<string> ans;
bool canPut(lli x,lli y,vector<string>& c){
    for(lli i = 0;i < 8;i++){
        lli t = x+dx[i],s = y+dy[i];
        while(t >= 0 && t < 8 && s >= 0 && s < 8){
            if(c[t][s] == 'Q') return false;
            t += dx[i];s += dy[i];
        }
    }   
    return true;
}
void aim(lli x,lli y,vector<string>& c){
    c[x][y] = 'Q';
    for(lli i = 0;i < 8;i++){
        lli t = x+dx[i],s = y+dy[i];
        while(t >= 0 && t < 8 && s >= 0 && s < 8){
            c[t][s] = '#';
            t += dx[i];s += dy[i];
        }
    }
}
lli dfs(lli i,vector<string> c,lli k){
    for(;i < 64;i++){
        if(c[i/8][i%8] == '.'){
            if(k == 1){
                ans[i/8][i%8] = 'Q';
                return i;
            }
            vector<string> c_ = c;
            aim(i/8,i%8,c_);
            if(dfs(i+1,c_,k-1) < 64){
                ans[i/8][i%8] = 'Q';
                return i;
            }
        }
    }
    return i;
}
int main(){
    for(lli i = 0;i < 8;i++) cin >> c[i];
    ans = c;
    for(lli i = 0;i < 8;i++){
        for(lli j = 0;j < 8;j++){
            if(c[i][j] == 'Q'){
                if(!canPut(i,j,c)){
                    cout << "No Answer" << endl;
                    return 0;
                }
            }
        }
    }
    for(lli i = 0;i < 8;i++){
        for(lli j = 0;j < 8;j++){
            if(c[i][j] == 'Q') aim(i,j,c);
        }
    }

    if(dfs(0,c,5) < 64){
        for(lli i = 0;i < 8;i++){
            cout << ans[i] << endl;
        }
    }else{
        cout << "No Answer" << endl;
    }
    return 0;
}

Submission Info

Submission Time
Task C - パズルのお手伝い
User deoxy
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1828 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