Pagini recente » Cod sursa (job #909842) | Cod sursa (job #599279) | Cod sursa (job #2641850) | Cod sursa (job #555297) | Cod sursa (job #268926)
Cod sursa(job #268926)
#include<stdio.h>
void minim(int secv[500010],long k,int &min,long &minnr)
{
long i;
min=secv[1];
minnr=1;
for(i=2;i<=k;i++)
if(min>secv[i])
{min=secv[i];minnr=1;}
else if(min==secv[i])
minnr++;
}
int main()
{
FILE *fi,*fo;
fi=fopen("secventa.in","r");
fo=fopen("secventa.out","w");
int min=-32000,nr,secv[100010],maxmin;
long n,k,i,minnr,mins=1,exit=1;
char cit;
fscanf(fi,"%ld %ld",&n,&k);
for(i=1;i<=k;i++){fscanf(fi,"%c",&cit);&secv[i]=cit-'0';}
minim(secv,k,min,minnr);
maxmin=min;
for(i=k+1;i<=n;i++)
{
fscanf(fi,"%c",&cit);
if(secv[exit]==min)
{
if(minnr==1)
{
secv[exit]=cit-'0';
exit=(exit!=k)?exit+1:1;
minim(secv,k,min,minnr);
if(min>maxmin)
{
maxmin=min;
mins=i-k+1;
}
}
else
{
minnr--;
secv[exit]=cit-'0';
exit=(exit!=k)?exit+1:1;
}
}
else
{
secv[exit]=cit-'0';
exit=(exit!=k)?exit+1:1;
}
}
fprintf(fo,"%ld %ld %d",mins,mins+k-1,maxmin);
return 0;
}