結果
問題 |
No.861 ケーキカット
|
ユーザー |
👑 |
提出日時 | 2019-08-09 22:44:18 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 883 bytes |
コンパイル時間 | 617 ms |
コンパイル使用メモリ | 64,384 KB |
実行使用メモリ | 10,624 KB |
最終ジャッジ日時 | 2024-07-19 14:50:14 |
合計ジャッジ時間 | 4,529 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | TLE * 2 -- * 1 |
other | AC * 1 -- * 20 |
ソースコード
#include <iostream> using namespace std; #define push_back pb int mp[5][5]; bool lock[5][5]; long long sm; void init(){ for(int i = 0; 5 > i; i++){ for(int j = 0; 5 > j; j++){ lock[i][j] = false; } } } long long solve(int i,int j, int nwp){ long long ans = sm; nwp += mp[i][j]; lock[i][j] = true; if(sm/2 <= nwp){ return nwp; } if(i != 0)ans = min(ans,solve(i-1,j,nwp)); if(j != 0)ans = min(ans,solve(i,j-1,nwp)); if(i != 4)ans = min(ans,solve(i+1,j,nwp)); if(j != 4)ans = min(ans,solve(i,j+1,nwp)); lock[i][j] = false; return ans; } int main(){ sm = 0; for(int i = 0; 5 > i; i++){ for(int j = 0; 5 > j; j++){ cin>>mp[i][j]; sm += mp[i][j]; } } long long mn = sm; for(int i = 0; 5 > i; i++){ for(int j = 0; 5 > j; j++){ init(); mn = min(mn,solve(i,j,0)); } } cout << sm-mn*2 <<endl; }