結果

問題 No.452 横着者のビンゴゲーム
ユーザー vjudge1
提出日時 2025-06-21 11:14:05
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
AC  
実行時間 928 ms / 3,000 ms
コード長 959 bytes
コンパイル時間 1,589 ms
コンパイル使用メモリ 164,052 KB
実行使用メモリ 106,748 KB
最終ジャッジ日時 2025-06-21 11:14:15
合計ジャッジ時間 10,156 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 41
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
#define int long long

const int N = 210;

int c[N][N][N];
set<int> s[4 * N][4 * N];

signed main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < m; i ++ )
		for (int j = 0; j < n; j ++ )
			for (int k = 0; k < n; k ++ ) cin >> c[i][j][k];
	for (int i = 0; i < m; i ++ )
	{
		for (int j = 0; j < n; j ++ )
			s[i][2 * n].insert(c[i][j][j]),
			s[i][2 * n + 1].insert(c[i][n - 1 - j][j]);
		for (int j = 0; j < n; j ++ )
			for (int k = 0; k < n; k ++ )
				s[i][j].insert(c[i][j][k]),
				s[i][n + j].insert(c[i][k][j]);
	}
	int res = 2 * n;
	for (int i = 0; i < m; i ++ )
		for (int j = i + 1; j < m; j ++ )
			for (int k = 0; k < 2 * n + 2; k ++ )
				for (int l = 0; l < 2 * n + 2; l ++ )
				{
					int cur = 0;
					for (auto T : s[j][l]) cur += s[i][k].count(T);
					res = min(res, (n - cur) * 2 + cur - 1);
				}
	cout << res << "\n";
    return 0;
}
0