結果

問題 No.452 横着者のビンゴゲーム
ユーザー ei1333
提出日時 2016-12-03 13:04:40
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 417 ms
コード長 1,252 Byte
コンパイル時間 1,039 ms
使用メモリ 8,916 KB
最終ジャッジ日時 2019-07-16 03:25:40

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
0_sample_1 AC 2 ms
6,872 KB
0_sample_2 AC 2 ms
8,916 KB
0_sample_3 AC 3 ms
6,868 KB
1_small_0 AC 3 ms
6,868 KB
1_small_1 AC 2 ms
6,868 KB
1_small_2 AC 3 ms
6,872 KB
1_small_3 AC 2 ms
6,868 KB
1_small_4 AC 3 ms
6,868 KB
1_small_5 AC 2 ms
6,872 KB
1_small_6 AC 2 ms
6,868 KB
1_small_7 AC 3 ms
6,868 KB
1_small_8 AC 3 ms
6,872 KB
1_small_9 AC 3 ms
8,916 KB
challenge01.txt AC 3 ms
6,868 KB
hand_0 AC 167 ms
6,872 KB
hand_1 AC 162 ms
6,872 KB
hand_2 AC 91 ms
6,868 KB
hand_3 AC 11 ms
6,872 KB
random_00 AC 36 ms
6,872 KB
random_01 AC 24 ms
6,868 KB
random_02 AC 18 ms
6,868 KB
random_03 AC 85 ms
6,868 KB
random_04 AC 16 ms
6,868 KB
random_05 AC 170 ms
8,916 KB
random_06 AC 12 ms
6,868 KB
random_07 AC 10 ms
6,872 KB
random_08 AC 92 ms
6,868 KB
random_09 AC 59 ms
6,872 KB
random_10 AC 40 ms
8,916 KB
random_11 AC 24 ms
6,872 KB
random_12 AC 109 ms
6,872 KB
random_13 AC 18 ms
6,868 KB
random_14 AC 14 ms
6,868 KB
random_15 AC 44 ms
6,872 KB
random_16 AC 39 ms
6,868 KB
random_17 AC 31 ms
6,868 KB
random_18 AC 11 ms
6,872 KB
random_19 AC 10 ms
6,868 KB
random_20 AC 417 ms
6,868 KB
random_21 AC 247 ms
6,868 KB
random_22 AC 247 ms
6,868 KB
random_23 AC 247 ms
6,868 KB
random_24 AC 251 ms
6,872 KB
random_25 AC 247 ms
6,868 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