結果
| 問題 |
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;
}