結果
問題 | No.45 回転寿司 |
ユーザー |
|
提出日時 | 2018-11-24 07:11:27 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,122 bytes |
コンパイル時間 | 1,958 ms |
コンパイル使用メモリ | 175,348 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-24 19:04:46 |
合計ジャッジ時間 | 2,880 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 2 WA * 28 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<int> sushi(n), eaten(n); for(int i = 0; i < n; i++) cin >> sushi[i]; queue<int> q; q.push(0); eaten[0] = sushi[0]; while(!q.empty()) { int tmp = q.front(); q.pop(); int a = tmp + 2, b = tmp + 3; if(eaten[a] == 0 && a >= 0 && a <= n - 1) { q.push(a); eaten[a] = eaten[tmp] + sushi[a]; } if(eaten[b] == 0 && b >= 0 && b <= n - 1) { q.push(b); eaten[b] = eaten[tmp] + sushi[b]; } } sort(eaten.begin(), eaten.end()); int ans1 = eaten.back(); fill(eaten.begin(), eaten.end(), 0); q.push(1); eaten[1] = sushi[1]; while(!q.empty()) { int tmp = q.front(); q.pop(); int a = tmp + 2, b = tmp + 3; if(eaten[a] == 0 && a >= 0 && a <= n - 1) { q.push(a); eaten[a] = eaten[tmp] + sushi[a]; } if(eaten[b] == 0 && b >= 0 && b <= n - 1) { q.push(b); eaten[b] = eaten[tmp] + sushi[b]; } } sort(eaten.begin(), eaten.end()); int ans2 = eaten.back(); cout << max(ans1, ans2) << endl; return 0; }