Pagini recente » Cod sursa (job #274498) | Cod sursa (job #1479951) | Cod sursa (job #2496073) | Cod sursa (job #268066) | Cod sursa (job #1492192)
#include <stdio.h>
#include <stdlib.h>
int coada[500000],v[500000];
int main()
{
FILE *fin,*fout;
int n,k,i,ad,min,j,valid,max,inceput,sfarsit,prim;
fin=fopen("secventa.in","r");
fout=fopen("secventa.out","w");
fscanf(fin,"%d %d",&n,&k);
if(k==1)
{
max=0;
inceput=0;
for(i=0; i<n; i++)
{
fscanf(fin,"%d",&v[i]);
if(max<v[i])
{
inceput=i;
max=v[i];
}
}
fprintf(fout,"%d %d %d",inceput+1,inceput+1,max);
}
else
{
for(i=0; i<n; i++)
{
fscanf(fin,"%d",&v[i]);
}
i=0;
ad=0;
while(i!=k-1)
{
min=v[i];
i++;
j=i;
while(i<k)
{
if(min>v[i])
{
min=v[i];
j=i;
}
i++;
}
coada[ad]=min;
ad++;
if(valid==1)
{
max=min;
inceput=0;
sfarsit=k-1;
}
i=j;
}
prim=1;
for(i=k; i<n; i++)
{
if(v[i-k]==coada[0])
{
for(j=0; j<ad-1; j++)
{
coada[j]=coada[j+1];
}
ad--;
}
while(v[i]<coada[ad-1] && ad>0)
ad--;
coada[ad]=v[i];
ad++;
if(coada[0]>max)
{
max=coada[0];
inceput=i-k+1;
sfarsit=i;
}
}
fprintf(fout,"%d %d %d",inceput+1,sfarsit+1,max);
}
fclose(fin);
fclose(fout);
return 0;
}