Submission #1180744


Source Code Expand

#include <cstdio>
#include <algorithm>

using namespace std;

#define REP(i,n)   for(int i=0; i<(int)(n); i++)
#define FOR(i,b,e) for(int i=(b); i<=(int)(e); i++)

struct board {
  int cnt;
  bool check;
  bool queen[8][8];
  bool used[8][8];
  void init() {
    cnt = 0;
    check = true;
    fill(queen[0], queen[8], false);
    fill(used[0], used[8], false);
  }
  void set(int i, int j) {
    if (queen[i][j]) return;
    use(i, j);
    int a = j + i;
    int b = j - i;
    REP(k, 8) {
      use(i, k);
      use(k, j);
      int c = a - k;
      if (c >= 0 && c < 8) use(k, c);
      int d = b + k;
      if (d >= 0 && d < 8) use(k, d);
    }
    queen[i][j] = true;
    cnt++;
  }
  void use(int i, int j) {
    used[i][j] = true;
    if (queen[i][j]) check = false;
  }
  bool next(int &i, int &j) {
    while (true) {
      if (j == 8) { j = 0; i++; }
      if (i == 8) { return false; }
      if (!used[i][j]) break;
      j++;
    }
    return true;
  }
  void dump() {
    REP(i, 8) REP(j, 8) {
      printf("%c%s", queen[i][j] ? 'Q' : '.', j == 7 ? "\n" : "");
    }
  }
};

char c[8][8 + 1];

board b;
board ans;

bool dfs(board &b, int i, int j) {
  if (!b.check) return false;
  if (b.cnt == 8) {
    ans = b;
    return true;
  }
  if (!b.next(i, j)) {
    return false;
  }
  board b2 = b;
  b2.set(i, j);
  if (dfs(b2, i, j + 1)) return true;
  if (dfs(b, i, j + 1)) return true;
  return false;
}

void solve() {
  if (dfs(b, 0, 0)) {
    ans.dump();
  } else {
    puts("No Answer");
  }
}

void input() {
  b.init();
  REP(i, 8) {
    scanf("%s", c[i]);
    REP(j, 8) if (c[i][j] == 'Q') b.set(i, j);
  }
}

int main() {
  input();
  solve();
  return 0;
}

Submission Info

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

Compile Error

./Main.cpp: In function ‘void input()’:
./Main.cpp:88:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%s", c[i]);
                      ^

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 128 KB
00_sample2.txt AC 0 ms 128 KB
01_rnd_00.txt AC 1 ms 128 KB
01_rnd_01.txt AC 1 ms 128 KB
01_rnd_02.txt AC 0 ms 128 KB
01_rnd_03.txt AC 1 ms 128 KB
01_rnd_04.txt AC 1 ms 128 KB
01_rnd_05.txt AC 1 ms 128 KB
01_rnd_06.txt AC 1 ms 128 KB
01_rnd_07.txt AC 1 ms 128 KB
01_rnd_08.txt AC 1 ms 128 KB
01_rnd_09.txt AC 1 ms 128 KB
01_rnd_10.txt AC 0 ms 128 KB
01_rnd_11.txt AC 1 ms 128 KB
01_rnd_12.txt AC 0 ms 128 KB
01_rnd_13.txt AC 1 ms 128 KB
01_rnd_14.txt AC 1 ms 128 KB
01_rnd_15.txt AC 1 ms 128 KB
01_rnd_16.txt AC 1 ms 128 KB
01_rnd_17.txt AC 1 ms 128 KB
01_rnd_18.txt AC 1 ms 128 KB
01_rnd_19.txt AC 1 ms 128 KB
01_rnd_20.txt AC 0 ms 128 KB
01_rnd_21.txt AC 0 ms 128 KB
01_rnd_22.txt AC 0 ms 128 KB
01_rnd_23.txt AC 1 ms 128 KB
01_rnd_24.txt AC 1 ms 128 KB
01_rnd_25.txt AC 1 ms 128 KB
01_rnd_26.txt AC 1 ms 128 KB
01_rnd_27.txt AC 1 ms 128 KB
01_rnd_28.txt AC 1 ms 128 KB
01_rnd_29.txt AC 0 ms 128 KB
01_rnd_30.txt AC 0 ms 128 KB
01_rnd_31.txt AC 1 ms 128 KB
01_rnd_32.txt AC 1 ms 128 KB
01_rnd_33.txt AC 0 ms 128 KB
01_rnd_34.txt AC 1 ms 128 KB
01_rnd_35.txt AC 1 ms 128 KB
01_rnd_36.txt AC 1 ms 128 KB
01_rnd_37.txt AC 1 ms 128 KB
01_rnd_38.txt AC 1 ms 128 KB
01_rnd_39.txt AC 1 ms 128 KB