結果
問題 | No.2463 ストレートフラッシュ |
ユーザー | tnakao0123 |
提出日時 | 2024-06-21 17:21:45 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,725 bytes |
コンパイル時間 | 759 ms |
コンパイル使用メモリ | 55,344 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-21 17:21:50 |
合計ジャッジ時間 | 4,806 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,940 KB |
testcase_02 | AC | 2 ms
6,940 KB |
testcase_03 | AC | 3 ms
6,944 KB |
testcase_04 | AC | 2 ms
6,944 KB |
testcase_05 | AC | 2 ms
6,940 KB |
testcase_06 | AC | 2 ms
6,940 KB |
testcase_07 | AC | 2 ms
6,944 KB |
testcase_08 | AC | 2 ms
6,944 KB |
testcase_09 | WA | - |
testcase_10 | AC | 2 ms
6,944 KB |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | AC | 72 ms
6,944 KB |
testcase_14 | AC | 105 ms
6,944 KB |
testcase_15 | AC | 80 ms
6,940 KB |
testcase_16 | AC | 96 ms
6,940 KB |
testcase_17 | AC | 107 ms
6,944 KB |
testcase_18 | AC | 116 ms
6,944 KB |
testcase_19 | AC | 117 ms
6,944 KB |
testcase_20 | AC | 114 ms
6,940 KB |
testcase_21 | AC | 45 ms
6,944 KB |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
ソースコード
/* -*- coding: utf-8 -*- * * 2463.cc: No.2463 繧ケ繝医Ξ繝シ繝医ヵ繝ゥ繝・す繝・ - yukicoder */ #include<cstdio> #include<vector> #include<algorithm> using namespace std; /* constant */ const int MAX_N = 500; const int MAX_M = 500; const int MAX_NM = MAX_N * MAX_M; const int INF = 1 << 30; /* typedef */ using vi = vector<int>; /* global variables */ int rs[MAX_NM], ss[MAX_NM]; vi avs[MAX_M]; bool used[MAX_N + 1]; /* subroutines */ /* main */ int main() { int n, m; scanf("%d%d", &n, &m); int nm = n * m; for (int i = 0; i < nm; i++) { scanf("%d%d", rs + i, ss + i), rs[i]--, ss[i]--; avs[ss[i]].push_back(rs[i]); } int minop = INF; for (int si = 0; si < m; si++) { fill(used, used + n + 1, false); int l = -1, r = -1, x = -1; for (auto ri: avs[si]) { used[ri] = true; int l0 = ri, r0 = ri; while (l0 > 0 && used[l0 - 1] && r0 - (l0 - 1) <= 4) l0--; while (r0 < n && used[r0 + 1] && (r0 + 1) - l0 <= 4) r0++; if (r0 - l0 == 4) { l = l0, r = r0, x = ri; break; } if (ri == 0) { used[n] = true; l0 = n, r0 = n; while (l0 > 0 && used[l0 - 1] && r0 - (l0 - 1) <= 4) l0--; if (r0 - l0 == 4) { l = l0, r = r0, x = n; break; } } } //printf(" si=%d, %d,%d,%d\n", si, l, r, x); int op = 0, c = 0; for (int i = 0; i < 5; i++) if (ss[i] == si && ((l <= rs[i] && rs[i] <= r) || (rs[i] == 0 && r == n))) c++; for (int i = 5; c < 5 && i < nm;) { op++; int d = 5 - c; while (d > 0) { if (ss[i] == si && ((l <= rs[i] && rs[i] <= r) || (rs[i] == 0 && r == n))) c++; d--, i++; } } minop = min(minop, op); } printf("%d\n", minop); return 0; }