提交时间:2022-07-13 11:50:21

运行 ID: 51520

#include <bits/stdc++.h> using namespace std; int num=0; struct node { char value; int wide; } S[210]; int ans=0; int anss[210]; int tik[210]; string ss; bool check() { for(int i=0; i<num;) { if(tik[i]==2) { int mark=0; char tt=S[i].value; int j; for(j=i+1; j<num; j++) { if(tik[i]==2&&tt!=S[j].value&&mark==0) { mark=1; } else if(tik[i]==2&&tt==S[j].value&&mark==0) { ; } else if(tik[i]==2&&tt==S[j].value&&mark==1) { return 0; } } i=j; continue; } i++; } return 1; } void dfs(int x,int tot) { if(x>num) { if(check()) { if(tot>ans) { ans=tot; for(int i=0; i<num; i++) { anss[i]=tik[i]; } } return; } return; } tik[x]=1; dfs(x+1,tot); tik[x]=2; dfs(x+1,tot+S[x].wide); tik[x]=0; } int main() { int n,k,type,tot=0; string s; cin>>n>>k>>type>>s; for(int i=0; i<n;) { S[num].value=s[i]; int j; for(j=i+1; j<n; j++) { if(s[j]!=s[i])break; } S[num].wide=j-i; num++; i=j; } dfs(0,0); cout<<ans<<endl; if(type) { for(int i=0; i<num; i++) { if(anss[i]==2) { for(int j=0; j<S[i].wide; j++) { cout<<S[i].value; } } } } return 0; }