結果
問題 | No.204 ゴールデン・ウィーク(2) |
ユーザー |
![]() |
提出日時 | 2015-05-08 22:55:23 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,984 bytes |
コンパイル時間 | 811 ms |
コンパイル使用メモリ | 66,788 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-13 11:40:28 |
合計ジャッジ時間 | 2,142 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 31 WA * 15 |
ソースコード
#include <iostream> #include <vector> #include <cmath> #include <numeric> #include <climits> #include <array> #define REP(i, n) for(int i=0;i<(n);i++) using namespace std; int main() { cin.tie(0); ios::sync_with_stdio(false); int D; cin >> D; std::array<char, 14> arr; REP(i, 14) { cin >> arr[i]; } vector<pair<char, int>> days; int i = 0; int j = 0; for(auto d: arr) { if (d == 'o') { if (j > 0) { days.emplace_back('x', j); j = 0; } i++; } else { if (i > 0) { days.emplace_back('o', i); i = 0; } j++; } } if (i > 0) { days.emplace_back('o', i); i = 0; } if (j > 0) { days.emplace_back('x', j); j = 0; } int idx = 0; int m = 0; while (idx < days.size()) { if (days[idx].first == 'o') { int k = days[idx].second; if (idx + 1 < days.size()) { k += min(D, days[idx+1].second); if (days[idx+1].second <= D && idx + 2 < days.size()) { k += days[idx + 2].second; } } m = max(m, k); idx++; } else { int k = 0; if (days[idx].second <= D) { k += days[idx].second; if(idx + 1 < days.size()) { k += days[idx + 1].second; } } else { k += D; if (idx + 1 < days.size()) { k += days[idx + 1].second; } } m = max(m, k); idx++; } } if (days[0].first == 'o') { m = max(m, D + days[0].second); } if (days[days.size() - 1].first == 'o') { m = max(m, D + days[days.size() - 1].second); } cout << m << endl; return 0; }