結果
問題 |
No.324 落ちてた閉路グラフ
|
ユーザー |
![]() |
提出日時 | 2016-06-19 17:48:06 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 868 bytes |
コンパイル時間 | 1,006 ms |
コンパイル使用メモリ | 64,984 KB |
実行使用メモリ | 10,276 KB |
最終ジャッジ日時 | 2024-10-11 12:53:53 |
合計ジャッジ時間 | 7,151 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | TLE * 1 -- * 33 |
ソースコード
#include <iostream> #include <vector> #include <map> #include <algorithm> using namespace std; #define REP(i,s,e) for (i = s; i <= e; i++) #define rep(i,n) REP (i,0,(int)(n)-1) #define RREP(i,s,e) for (i = s; i >= e; i--) #define rrep(i,n) RREP (i,(int)(n)-1,0) #define INF (int)1e8 #define MOD (int)(1e9+7) typedef long long ll; int w[3000]; int n; int dfs(int pre, int now, int m, bool fst) { int ret1, ret2 = -INF; if (now < n) { ret1 = dfs(pre,now+1,m,fst); if (m > 0) ret2 = dfs(now,now+1,m-1,fst) + (pre + 1 == now ? w[pre] : 0); } else if (m > 0) ret1 = -INF; else ret1 = fst && pre + 1 == now ? w[n-1] : 0; return max(ret1,ret2); } int main(void) { int i, m; cin >> n >> m; rep (i,n) cin >> w[i]; cout << max(dfs(0,1,m-1,true),dfs(-1,1,m,false)) << endl; return 0; }