Pagini recente » Cod sursa (job #2831521) | Cod sursa (job #2556868) | Cod sursa (job #2371428) | Cod sursa (job #1190489) | Cod sursa (job #1351014)
#include <cstdio>
FILE*f=fopen("sirag2.in","r");
FILE*h=fopen("sirag2.out","w");
int n,L,s[100001],l[100001],v[100001],d[100001],t;
int main(){
fscanf(f,"%d",&t);
while ( t ){
--t;
fscanf(f,"%d%d\n",&n,&L);
for ( int i=0;i<n;++i ){
char c;
fscanf(f,"%c",&c);
if ( i<L ){
l[i]=c;
v[i]=1;
if ( c=='*' )
s[i]=1;
else
s[i]=0;
}
else {
if ( c=='*' ){
s[i]=s[i-L]+1;
v[i]=v[i-L]+1;
l[i]=s[i-L];
}
else
if ( c==l[i-L]||l[i-L]=='*' ){
l[i]=c;
s[i]=0;
v[i]=v[i-L]+1;
}
else {
l[i]=c;
s[i]=0;
v[i]=1+s[i-L];
}
}
}
int x=0,y=-1,maximin=0;
for ( int i=0;i<n;++i ){
while ( x<=y&&v[i]<v[d[y]] )
--y;
++y;
d[y]=i;
if ( d[x]==i-L )
++x;
if ( i>=L )
if ( maximin<v[d[x]] )
maximin=v[d[x]];
}
fprintf(h,"%d\n",maximin*L);
}
return 0;
}