提交时间:2022-07-13 12:23:41
运行 ID: 51650
#include <iostream> #include <deque> #include <cstdio> using namespace std; struct Node { int len; int link; char c; bool flag; }; int n,k,type; deque<Node>dq; string str; deque<int>ans; void read() { cin>>n>>k>>type>>str; char x='A'; str=str+" "; Node temp; temp.flag=false; for(int i=0; i<=n; i++) { if(str[i]!=x) { dq.push_back(temp); temp.link=i; temp.len=1; temp.c=str[i]; x=str[i]; } else { temp.len++; } } dq.pop_front(); } void PrintDq() { cout<<endl; for(int i=0; i<dq.size(); i++) { cout<<dq[i].link<<" "<<dq[i].len<<" "<<dq[i].flag<<endl; } cout<<endl; } int main() { freopen("seq.out","w",stdout); freopen("seq.in","r",stdin); read(); for(int i=0; i<dq.size(); i++) { for(int j=i+1; j<dq.size(); j++) { if(dq[i].flag) { continue; } if(dq[i].c==dq[j].c) { if((dq[j].link-dq[i].link-dq[i].len)>=(dq[i].len)) { dq[i].flag=true; } else { for(int a=i+1; a<j; a++) { dq[a].flag=true; } } } } } for(int i=0; i<dq.size(); i++) { if(!dq[i].flag) { for(int j=0; j<dq[i].len; j++) { ans.push_back(dq[i].c); } } } cout<<ans.size()<<endl; if(type==1 or type==2) { for(int i=0; i<ans.size(); i++) { cout<<(char)ans[i]; } } return 0; } /* temp.link=2 temp.len=1 char=c kick 0 0 0 1 1 1 */