Submission #931446

#TimeUsernameProblemLanguageResultExecution timeMemory
931446rainboy여왕벌 (KOI15_queen)C11
68 / 100
5039 ms31708 KiB
#include <stdio.h> #define N 700 int min(int a, int b) { return a < b ? a : b; } int max(int a, int b) { return a > b ? a : b; } int main() { static char cc[3][3][3][N][N]; static int jj01[N][N + 1], jj02[N][N + 1], jj12[N][N + 1], ans[N][N + 1]; int n, k, i, j, j1, j2, a, b, c; scanf("%d%d", &n, &k); for (i = 1; i < n; i++) for (j = 1; j < n; j++) { static char s[28]; scanf("%s", s); for (a = 0; a < 3; a++) for (b = 0; b < 3; b++) for (c = 0; c < 3; c++) cc[a][b][c][i][j] = s[(a * 3 + b) * 3 + c]; } for (i = 1; i < n; i++) { for (j = n; j >= 1; j--) jj01[i][j] = j == n || cc[0][1][1][i][j] != 'L' ? j : jj01[i][j + 1]; for (j = n; j >= 1; j--) jj02[i][j] = j == n || cc[0][2][2][i][j] != 'L' ? j : jj02[i][j + 1]; for (j = n; j >= 1; j--) jj12[i][j] = j == n || cc[1][2][2][i][j] != 'L' ? j : jj12[i][j + 1]; } while (k--) { int x, y; scanf("%d%d%*d", &x, &y), y += x; j1 = max(x - (n - 1), 0), j2 = max(y - (n - 1), 0); ans[0][j1]++, ans[0][j2]++; for (i = 1; i < n; i++) { if (n - i <= x) { if (j1 == j2) { if (j2 == 0 || j2 < n && cc[0][0][2][i][j2] != 'U') j1 = j2 = jj02[i][j2 + 1]; } else if (j1 == 0 || j1 < n && cc[0][0][1][i][j1] != 'U') { j1 = min(j2, jj01[i][j1 + 1]); if (j1 < j2) { if (j2 < n && cc[1][1][2][i][j2] != 'U') j2 = jj12[i][j2 + 1]; } else if (j2 < n) { if (cc[0][1][2][i][j2] == 'L') j1 = j2 = jj02[i][j2 + 1]; else if (cc[0][1][2][i][j2] == 'D') j2 = jj12[i][j2 + 1]; } } else { if (j2 < n && cc[1][1][2][i][j2] != 'U') j2 = jj12[i][j2 + 1]; } } else if (n - i <= y) { if (j2 == 0 || j2 < n && cc[1][1][2][i][j2] != 'U') j2 = jj12[i][j2 + 1]; } ans[i][j1]++, ans[i][j2]++; } } for (i = 0; i < n; i++) for (j = 1; j < n; j++) ans[i][j] += ans[i][j - 1]; for (i = 0; i < n; i++) for (j = 0; j < n; j++) ans[i][j]++; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf("%d ", ans[i][j]); printf("\n"); } return 0; }

Compilation message (stderr)

queen.c: In function 'main':
queen.c:41:28: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   41 |      if (j2 == 0 || j2 < n && cc[0][0][2][i][j2] != 'U')
      |                     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
queen.c:43:34: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   43 |     } else if (j1 == 0 || j1 < n && cc[0][0][1][i][j1] != 'U') {
      |                           ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
queen.c:59:27: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   59 |     if (j2 == 0 || j2 < n && cc[1][1][2][i][j2] != 'U')
      |                    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
queen.c:13:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |  scanf("%d%d", &n, &k);
      |  ^~~~~~~~~~~~~~~~~~~~~
queen.c:18:4: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |    scanf("%s", s);
      |    ^~~~~~~~~~~~~~
queen.c:35:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   35 |   scanf("%d%d%*d", &x, &y), y += x;
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...