提交时间:2022-07-13 11:51:09
运行 ID: 51533
#include <bits/stdc++.h> using namespace std; int n,k,T; char c[3001]; vector<char> v; int main() { //freopen("seq.in","r",stdin); //freopen("seq.out","w",stdout); scanf("%d%d%d",&n,&k,&T); scanf("%s",c+1); if(T==0) { for(int i=2; i<=n; i++) { if(c[i-1]!=c[i]) { bool b=0; int cnt1=0,cnt2=0; for(int j=i-1; j>=1; j--) { if(c[j]==c[i]) { b=1; break; } cnt1++; } if(b) { for(int j=i; j<=n; j++) { if(c[i]!=c[j]) break; cnt2++; } n-=min(cnt1,cnt2); } } } printf("%d\n",n); } if(T==1) { v.reserve(3001); for(int i=1; i<=n; i++) v.push_back(c[i]); for(int i=1; i<n; i++) { if(v[i-1]!=v[i]) { bool b=0; int l=0,r=0,s=0,t=0,cnt1=0,cnt2=0; for(int j=i-1; j>=0; j--) { if(v[i]==v[j]) { l=j+1,b=1; break; } cnt1++; } if(b) { r=i-1,s=i; for(int j=i; j<n; j++) { if(v[i]!=v[j]) break; t=j; cnt2++; } if(cnt1<cnt2) v.erase(v.begin()+l,v.begin()+r+1); else v.erase(v.begin()+s,v.begin()+t+1); i--; n-=min(cnt1,cnt2); } } } cout<<n<<'\n'; for(int i=0; i<n; i++) cout<<v[i]; } return 0; }