結果

問題 No.452 横着者のビンゴゲーム
ユーザー ei1333
提出日時 2016-12-03 13:04:40
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 464 ms
コード長 1,252 Byte
コンパイル時間 3,732 ms
使用メモリ 4,164 KB
最終ジャッジ日時 2020-01-12 13:42:36

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
0_sample_1 AC 0 ms
3,384 KB
0_sample_2 AC 0 ms
3,444 KB
0_sample_3 AC 4 ms
3,324 KB
1_small_0 AC 0 ms
3,432 KB
1_small_1 AC 4 ms
3,440 KB
1_small_2 AC 4 ms
3,444 KB
1_small_3 AC 0 ms
3,452 KB
1_small_4 AC 4 ms
3,468 KB
1_small_5 AC 0 ms
3,416 KB
1_small_6 AC 4 ms
3,332 KB
1_small_7 AC 4 ms
3,292 KB
1_small_8 AC 0 ms
3,316 KB
1_small_9 AC 4 ms
3,300 KB
challenge01.txt AC 0 ms
3,452 KB
hand_0 AC 228 ms
3,676 KB
hand_1 AC 216 ms
3,632 KB
hand_2 AC 116 ms
3,808 KB
hand_3 AC 8 ms
4,164 KB
random_00 AC 36 ms
3,496 KB
random_01 AC 24 ms
3,704 KB
random_02 AC 20 ms
3,752 KB
random_03 AC 92 ms
3,496 KB
random_04 AC 16 ms
3,964 KB
random_05 AC 184 ms
3,516 KB
random_06 AC 8 ms
4,044 KB
random_07 AC 8 ms
3,692 KB
random_08 AC 100 ms
3,476 KB
random_09 AC 64 ms
3,692 KB
random_10 AC 40 ms
3,552 KB
random_11 AC 28 ms
3,636 KB
random_12 AC 120 ms
3,520 KB
random_13 AC 20 ms
3,484 KB
random_14 AC 12 ms
3,584 KB
random_15 AC 48 ms
3,584 KB
random_16 AC 40 ms
3,520 KB
random_17 AC 32 ms
3,684 KB
random_18 AC 8 ms
3,732 KB
random_19 AC 8 ms
4,088 KB
random_20 AC 464 ms
3,584 KB
random_21 AC 272 ms
3,652 KB
random_22 AC 268 ms
3,616 KB
random_23 AC 272 ms
3,812 KB
random_24 AC 272 ms
3,748 KB
random_25 AC 272 ms
3,532 KB
テストケース一括ダウンロード

ソースコード

diff #
#include <bits/stdc++.h>

using namespace std;

const int INF = 1 << 30;

int N, M, C[200][100][100];
vector< vector< int > > vec[200];

int rac()
{
  int ret = INF;
  for(int i = 0; i < M; i++) {
    for(auto &vc : vec[i]) sort(begin(vc), end(vc));
  }

  for(int i = 0; i < M; i++) {
    for(auto &vc : vec[i]) {
      for(int j = i + 1; j < M; j++) {
        for(auto &vv : vec[j]) {
          int match = 0;
          for(int k = 0; k < N; k++) match += binary_search(begin(vv), end(vv), vc[k]);
          ret = min(ret, N + N - match - 1);
        }
      }
    }
  }
  return (max(1, ret));
}

int main()
{
  scanf("%d %d", &N, &M);
  for(int i = 0; i < M; i++) {
    for(int j = 0; j < N; j++) {
      for(int k = 0; k < N; k++) {
        scanf("%d", &C[i][j][k]);
      }
    }
  }
  for(int i = 0; i < M; i++) {
    vector< int > vc(N);
    for(int j = 0; j < N; j++) {
      for(int k = 0; k < N; k++) vc[k] = C[i][j][k];
      vec[i].emplace_back(vc);
      for(int k = 0; k < N; k++) vc[k] = C[i][k][j];
      vec[i].emplace_back(vc);
    }
    for(int k = 0; k < N; k++) vc[k] = C[i][k][k];
    vec[i].emplace_back(vc);
    for(int k = 0; k < N; k++) vc[k] = C[i][k][N - k - 1];
    vec[i].emplace_back(vc);
  }
  cout << rac() << endl;
}
0