提交时间:2022-07-13 11:47:07

运行 ID: 51500

#include <bits/stdc++.h> using namespace std; int n,kk,t,f[3005],lst[3005],ans,mxbj; char s[3005]; string xl[3005]; inline bool check(int x,char c){ for(;x;x=lst[x]) if(s[x]==c) return 0; return 1; } int main(){ cin>>n>>kk>>t; getchar(); for(int i=1;i<=n;i++) s[i]=getchar(); xl[1]=s[1]; for(int i=1;i<=n;i++){ f[i]=1; for(int j=1;j<i;j++) if((s[i]==s[j]||check(j,s[i]))&&(f[j]+1>f[i]||(f[j]+1==f[i]&&xl[j]+s[i]<xl[i]))) lst[i]=j,f[i]=f[j]+1,xl[i]=xl[j]+s[i]; } for(int i=1;i<=n;i++) if(f[i]>ans||(f[i]==ans&&xl[i]<xl[mxbj])) ans=f[i],mxbj=i; printf("%d\n",ans); if(t) cout<<xl[mxbj]<<endl; return 0; }