結果
| 問題 |
No.204 ゴールデン・ウィーク(2)
|
| コンテスト | |
| ユーザー |
peroon
|
| 提出日時 | 2019-04-23 20:45:22 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,641 bytes |
| コンパイル時間 | 1,672 ms |
| コンパイル使用メモリ | 170,976 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-15 16:07:13 |
| 合計ジャッジ時間 | 3,233 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 44 WA * 2 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define FOR(i,a,b) for(ll i=(a);i<(b);++i)
#define ALL(v) (v).begin(), (v).end()
#define p(s) cout<<(s)<<endl
#define p2(s, t) cout << (s) << " " << (t) << endl
#define br() p("")
#define pn(s) cout << (#s) << " " << (s) << endl
#define p_yes() p("Yes")
#define p_no() p("No")
const ll mod = 1e9 + 7;
const ll inf = 1e18;
ll count_o(string s){
ll L = s.size();
ll start = -1;
FOR(i, 0, L){
if(s[i]=='o'){
start = i;
break;
}
}
if(start==-1) return 0;
ll count = 0;
FOR(i, start, L){
if(s[i]=='o'){
count++;
}else{
break;
}
}
return count;
}
string rip_off_outer_o(string s){
ll L = s.size();
ll start = -1;
FOR(i, 0, L){
if(s[i]=='o'){
start = i;
break;
}
}
ll end = -1;
for(int i=L-1; i>=0; i--){
if(s[i]=='o'){
end = i;
break;
}
}
stringstream ss;
FOR(i, start, end+1){
ss << s[i];
}
return ss.str();
}
ll max_o_len(string s){
ll L = s.size();
ll max_len = 0;
FOR(i, 0, L){
if(s[i]=='o'){
ll len = 0;
FOR(j, i, L){
if(s[j]=='o'){
len++;
}else{
break;
}
}
max_len = max(max_len, len);
}
}
return max_len;
}
int main(){
cin.tie(0);
ios::sync_with_stdio(false);
// input
ll D;
cin >> D;
string s;
cin >> s;
string temp;
cin >> temp;
s = s + temp;
ll L = s.size();
string t = s;
reverse(ALL(t));
ll left = count_o(s);
ll right = count_o(t);
// o??????oなる文字列
string u = rip_off_outer_o(s);
ll center = 0;
if(u.size()>0){
FOR(i, 0, u.size()){
if(u[i]=='x'){
// そこからKのばす
string v = u;
ll count = 0;
FOR(j, i, v.size()){
if(v[j]=='x'){
v[j] = 'o';
count++;
if(count==D) break;
}else{
break;
}
}
// vが書き換えられた
ll len = max_o_len(v);
center = max(center, len);
}
}
}
left += D;
right += D;
ll ans = max(left, right);
ans = max(ans, center);
p(ans);
return 0;
}
peroon