結果
問題 | No.452 横着者のビンゴゲーム |
ユーザー |
![]() |
提出日時 | 2016-12-03 18:15:58 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,061 ms / 3,000 ms |
コード長 | 1,512 bytes |
コンパイル時間 | 1,940 ms |
コンパイル使用メモリ | 177,240 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-28 23:14:25 |
合計ジャッジ時間 | 13,219 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int N, M; cin >> N >> M; int B[M][N][N]; int L[M][N*2+2][N]; int cnt = 0; for (int m = 0; m < M; ++m) { for (int y = 0; y < N; ++y) { for (int x = 0; x < N; ++x) { cin >> B[m][x][y]; } } } for (int m = 0; m < M; ++m) { int c = 0; for (int x = 0; x < N; ++x, ++c) { for (int i = 0; i < N; ++i) { L[m][c][i] = B[m][x][i]; } } for (int y = 0; y < N; ++y, ++c) { for (int i = 0; i < N; ++i) { L[m][c][i] = B[m][i][y]; } } for (int i = 0; i < N; ++i) { L[m][c][i] = B[m][i][i]; L[m][c+1][i] = B[m][i][N-i-1]; } } unordered_set<int> s{}; for (int m = 0; m < M; ++m) { for (int a = 0; a < N*2+2; ++a) { for (int i = 0; i < M; ++i) { if (i == m) { continue; } s.clear(); for (int k = 0; k < N; ++k) { s.insert(L[m][a][k]); } for (int j = 0, c = 0; j < N*2+2; ++j, c = 0) { for (int k = 0; k < N; ++k) { if(s.count(L[i][j][k])){ ++c;} } cnt = max(cnt, c); } } } } cout << N+N-cnt-1 << endl; return 0; }