結果
問題 | No.452 横着者のビンゴゲーム |
ユーザー |
![]() |
提出日時 | 2016-12-03 00:21:29 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,446 ms / 3,000 ms |
コード長 | 2,040 bytes |
コンパイル時間 | 1,380 ms |
コンパイル使用メモリ | 104,304 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-28 21:19:07 |
合計ジャッジ時間 | 13,478 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
// #includes {{{#include <algorithm>#include <numeric>#include <iostream>#include <string>#include <vector>#include <queue>#include <list>#include <deque>#include <stack>#include <vector>#include <map>#include <cstdio>#include <cstdlib>#include <cassert>#include <cstring>#include <cmath>using namespace std;// }}}// pre-written code {{{#define REP(i,n) for(int i=0;i<(int)(n);++i)#define RREP(i,a,b) for(int i=(int)(a);i<(int)(b);++i)#define FOR(i,c) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();++i)#define LET(x,a) __typeof(a) x(a)//#define IFOR(i,it,c) for(__typeof((c).begin())it=(c).begin();it!=(c).end();++it,++i)#define ALL(c) (c).begin(), (c).end()#define MP make_pair#define EXIST(e,s) ((s).find(e)!=(s).end())#define REvector(a) memvector((a),0,sizeof(a))#define vector(a) memvector((a),-1,sizeof(a))#define PB push_back#define DEC(it,command) __typeof(command) it=commandconst int INF=0x3f3f3f3f;typedef long long Int;typedef unsigned long long uInt;#ifdef __MINGW32__typedef double rn;#elsetypedef long double rn;#endiftypedef pair<int,int> pii;/*#ifdef MYDEBUG#include"debug.h"#include"print.h"#endif*/// }}}int C[222][111][111];vector<vector<vector<int> > > v;int N,M;vector<vector<int> > make_blist(int s){vector<vector<int> > bs;REP(i,N){vector<int> st;REP(j,N)st.push_back(C[s][i][j]);bs.push_back(st);}REP(j,N){vector<int> st;REP(i,N)st.push_back(C[s][i][j]);bs.push_back(st);}{vector<int> st;REP(i,N)st.push_back(C[s][i][i]);bs.push_back(st);}{vector<int> st;REP(i,N)st.push_back(C[s][i][N-1-i]);bs.push_back(st);}return bs;}int main(){cin>>N>>M;REP(t,M)REP(i,N)REP(j,N)cin>>C[t][i][j];REP(t,M){v.push_back(make_blist(t));}int ans = INF;REP(t,M)RREP(s,t+1,M){for(auto a:v[t])for(auto b:v[s]){vector<int> c = a;c.insert(c.end(),ALL(b));sort(ALL(c));int k = distance(c.begin(),unique(ALL(c)));ans = min(k,ans);}}cout<<max(1,ans-1)<<endl;return 0;}