結果
問題 | No.452 横着者のビンゴゲーム |
ユーザー |
![]() |
提出日時 | 2019-01-02 16:40:29 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,337 bytes |
コンパイル時間 | 1,397 ms |
コンパイル使用メモリ | 74,092 KB |
実行使用メモリ | 168,224 KB |
最終ジャッジ日時 | 2024-11-21 05:01:04 |
合計ジャッジ時間 | 54,492 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 32 TLE * 9 |
ソースコード
#include <iostream>#include <vector>#include <algorithm>using namespace std;int main() {int N, M;cin >> N >> M;vector<vector<vector<int> > > players(M);int maximum = 0;for (int i = 0; i < M; i++) {vector<vector<int> > card(N);for (int j = 0; j < N; j++) {vector<int> row(N);for (int k = 0; k < N; k++) {cin >> row[k];maximum = max(maximum, row[k]);}card[j] = row;}players[i] = card;}vector<vector<vector<int> > > bingos(M);for (int i = 0; i < M; i++) {vector<vector<int> > lines;// left to rightfor (int j = 0; j < N; j++) {vector<int> lr(maximum);for (int k = 0; k < N; k++) {lr[players[i][j][k]-1] = 1;}lines.push_back(lr);}// top to downfor (int j = 0; j < N; j++) {vector<int> td(maximum);for (int k = 0; k < N; k++) {td[players[i][k][j]-1] = 1;}lines.push_back(td);}// upper left to lower rightvector<int> ullr(maximum);for (int j = 0; j < N; j++) {ullr[players[i][j][j]-1] = 1;}lines.push_back(ullr);// upper right to lower leftvector<int> urll(maximum);for (int j = 0; j < N; j++) {urll[players[i][j][N-j-1]-1] = 1;}lines.push_back(urll);bingos[i] = lines;}int min_unmatched = 100000000;for (int i = 0; i < M; i++) {for (int j = i+1; j < M; j++) {for (int x = 0; x < 2*N+2; x++) {for (int y = 0; y < 2*N+2; y++) {int matched = 0;for (int s = 0; s < maximum; s++) {if (bingos[i][x][s] == 1 && bingos[j][y][s] == 1) {matched++;}}if (matched != 0) {min_unmatched = min(min_unmatched, N-matched);}}}}}min_unmatched = min(N,min_unmatched);cout << N+min_unmatched-1 << endl;}