1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#include<string> using namespace std; const int maxn=50040; void (string str,int k) { int len=str.length(); int arraya[maxn]={0}; int arrayb[maxn]={0}; int J=1; int K=1; int maxa=0; int maxb=0; for(int i=0;i<len;i++) { if(str[i]=='a') { arraya[J++]=i+1; } if(str[i]=='b') { arrayb[K++]=i+1; } } arraya[J]=len; arrayb[K]=len; arraya[0]=1; arrayb[0]=1; int temp1,temp2; for(int i=1;i<=J-k;i++) { if(i==1 || i==J-k) { temp1=arraya[i+k]-arraya[i-1]; } else { temp1=arraya[i+k]-arraya[i-1]-1; } if(temp1>maxa) { maxa=temp1; } } for(int i=1;i<=K-k;i++) { if(i==1 || i==K-k) { temp2=arrayb[i+k]-arrayb[i-1]; } else { temp2=arrayb[i+k]-arrayb[i-1]-1; } if(temp2>maxb) { maxb=temp2; } } int a=(maxa>maxb)?maxa:maxb; cout<<a<<endl; } int main() { string str; int n,m; while(cin>>n>>m) { cin>>str; int len=str.length(); longstr(str,m); } }
|
近期评论