結果
問題 |
No.1345 Beautiful BINGO
|
ユーザー |
|
提出日時 | 2021-01-17 10:43:23 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 894 bytes |
コンパイル時間 | 621 ms |
コンパイル使用メモリ | 68,956 KB |
実行使用メモリ | 12,800 KB |
最終ジャッジ日時 | 2024-11-29 07:49:16 |
合計ジャッジ時間 | 46,734 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 47 TLE * 14 |
コンパイルメッセージ
main.cpp:8:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 8 | main() | ^~~~
ソースコード
#include<iostream> #include<algorithm> using namespace std; int N,M; int A[16][16]; int Si[16]; int Sj[16][1<<16]; main() { cin>>N>>M; for(int i=0;i<N;i++)for(int j=0;j<N;j++)cin>>A[i][j]; for(int i=0;i<N;i++)for(int j=0;j<N;j++)Si[i]+=A[i][j]; for(int j=0;j<N;j++) { for(int i=0;i<1<<N;i++) { for(int k=0;k<N;k++)if(!(i>>k&1))Sj[j][i]+=A[k][j]; } } long comb=(1L<<M)-1; int ans=1e9; while(comb<1L<<N+N+2) { int now=0; for(int i=0;i<N;i++)if(comb>>i&1)now+=Si[i]; for(int j=0;j<N;j++)if(comb>>N+j&1)now+=Sj[j][comb&(1<<N)-1]; if(comb>>N+N&1) { for(int i=0;i<N;i++)if(!(comb>>i&1|comb>>N+i&1))now+=A[i][i]; } if(comb>>N+N+1&1) { for(int i=0;i<N;i++)if(!(comb>>i&1|comb>>N+N-i-1&1)) { if(i!=N-i-1||!(comb>>N+N&1))now+=A[i][N-i-1]; } } if(ans>now)ans=now; long x=comb&-comb; long y=comb+x; comb=(comb&~y)/x>>1|y; } cout<<ans<<endl; }