結果
問題 | No.204 ゴールデン・ウィーク(2) |
ユーザー |
|
提出日時 | 2015-05-08 22:44:15 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 3 ms / 1,000 ms |
コード長 | 1,610 bytes |
コンパイル時間 | 1,686 ms |
コンパイル使用メモリ | 167,088 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-24 11:36:49 |
合計ジャッジ時間 | 2,541 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 46 |
ソースコード
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); i++) #define fr(i, a, b) for (int i = (a); i < (b); i++) using namespace std; typedef long long ll; const ll inf = 1e9; const ll mod = 1e9 + 7; typedef pair<int, int> P; class RLE { public: vector<P> encode(vector<int> v) { vector<P> res; P p(v[0], 1); for (int i = 1; i < v.size(); i++) { if (p.first == v[i]) { p.second++; } else { res.push_back(p); p = make_pair(v[i], 1); } } res.push_back(p); return res; } }; int main() { string s[2]; int D; cin >> D; cin >> s[0] >> s[1]; string w = "xxxxxxxxxxxxxx" + s[0] + s[1] + "xxxxxxxxxxxxxx"; RLE rle; vector<int> u; rep (i, w.length()) { u.push_back(w[i] == 'o'); } vector<P> v = rle.encode(u); int ans = 0; for (int i = 0; i < v.size(); i++) { if (v[i].first == 0) { int DD = min(v[i].second, D); int temp = DD; int temp2 = DD; if (v[i].second == DD && i + 1 < v.size()) { temp += v[i + 1].second; } if (v[i].second == DD && i - 1 >= 0) { temp2 += v[i - 1].second; } if (i - 1 >= 0) { temp += v[i - 1].second; } if (i + 1 < v.size()) { temp2 += v[i + 1].second; } ans = max(ans, temp); ans = max(ans, temp2); } } cout << ans << endl; }