Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
51572 | ZZQ | 最优子序列 | C++ | 运行超时 | 0 | 1000 MS | 268 KB | 972 | 2022-07-13 11:53:22 |
#include <bits/stdc++.h> using namespace std; bool flag[3001]; int main() { int type; scanf("%*d%*d%d",&type); string s; cin >> s; int ans = s.size(); int j,cnt,cmt; for(register int i = 0;i < s.size();i = cmt + 1) { for(cnt = i + 1;s[cnt - 1] == s[cnt] && cnt < s.size();cnt++); for(j = cnt + 1;s[i] != s[j] && j < s.size();j++); if(j == s.size()) continue; for(cmt = j;s[i] == s[cmt] && j < s.size();cmt++); if(cnt - i >= j - cnt && cmt - j >= j - cnt) { ans -= j - cnt; for(register int x = cnt;x < j;x++) flag[x] = true; } else if(cnt - i < j - cnt && cmt - j >= j - cnt) { ans -= cnt - i; for(register int x = i;x < cnt;x++) flag[x] = true; } else { ans -= cmt - j; for(register int x = j;x < cmt;x++) flag[x] = true; } } printf("%d\n",ans); if(type == 1 || type == 2) for(register int i = 0;i < s.size();i++) { if(!flag[i]) putchar(s[i]); } return 0; }