제출 #544740

#제출 시각아이디문제언어결과실행 시간메모리
544740rainboyGenetics (BOI18_genetics)C11
100 / 100
723 ms33392 KiB
#include <stdio.h> #define N 4100 #define M 4100 #define MD 0x7fffffff #define X 12345 #define Y 54321 int px[N], py[N]; void init() { int i; px[0] = py[0] = 1; for (i = 1; i < N; i++) { px[i] = (long long) px[i - 1] * X % MD; py[i] = (long long) py[i - 1] * Y % MD; } } int main() { static char cc[N][M + 1]; static long long xx[N], yy[N]; int n, m, d_, h, i, j, x, y; init(); scanf("%d%d%d", &n, &m, &d_); for (i = 0; i < n; i++) scanf("%s", cc[i]); for (i = 0; i < n; i++) { xx[i] = (long long) px[i] * d_ % MD; yy[i] = (long long) py[i] * d_ % MD; } for (h = 0; h < m; h++) { int ax, cx, gx, tx, ay, cy, gy, ty; long long sx, sy; ax = ay = cx = cy = gx = gy = tx = ty = 0; for (i = 0; i < n; i++) if (cc[i][h] == 'A') ax = ((long long) ax + px[i]) % MD, ay = ((long long) ay + py[i]) % MD; else if (cc[i][h] == 'C') cx = ((long long) cx + px[i]) % MD, cy = ((long long) cy + py[i]) % MD; else if (cc[i][h] == 'G') gx = ((long long) gx + px[i]) % MD, gy = ((long long) gy + py[i]) % MD; else if (cc[i][h] == 'T') tx = ((long long) tx + px[i]) % MD, ty = ((long long) ty + py[i]) % MD; sx = (long long) ax + cx + gx + tx, sy = (long long) ay + cy + gy + ty; for (i = 0; i < n; i++) if (cc[i][h] == 'A') xx[i] = ((long long) xx[i] + sx - ax) % MD, yy[i] = ((long long) yy[i] + sy - ay) % MD; else if (cc[i][h] == 'C') xx[i] = ((long long) xx[i] + sx - cx) % MD, yy[i] = ((long long) yy[i] + sy - cy) % MD; else if (cc[i][h] == 'G') xx[i] = ((long long) xx[i] + sx - gx) % MD, yy[i] = ((long long) yy[i] + sy - gy) % MD; else if (cc[i][h] == 'T') xx[i] = ((long long) xx[i] + sx - tx) % MD, yy[i] = ((long long) yy[i] + sy - ty) % MD; } x = y = 0; for (i = 0; i < n; i++) x = (x + (long long) px[i] * d_) % MD, y = (y + (long long) py[i] * d_) % MD; for (i = 0; i < n; i++) if (xx[i] == x && yy[i] == y) { for (j = 0; j < n; j++) if (j != i) { int d; d = 0; for (h = 0; h < m; h++) if (cc[i][h] != cc[j][h]) if (d++ == d_) goto out; out: if (d != d_) break; } if (j == n) { printf("%d\n", i + 1); return 0; } } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

genetics.c: In function 'main':
genetics.c:27:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |  scanf("%d%d%d", &n, &m, &d_);
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
genetics.c:29:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   29 |   scanf("%s", cc[i]);
      |   ^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...