Cod sursa(job #28002)

Utilizator k_ounu_eddyIacob Eduard k_ounu_eddy Data 7 martie 2007 13:22:35
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
long int N,K,deque[100001],poz[100000],primul=1,ultimul,max,end;
char buff[100000];

FILE *f=fopen("secventa.in","rt");
FILE *g=fopen("secventa.out","wt");

int main()
{setbuffer(f,buff,sizeof(buff));
fscanf(f,"%ld %ld",&N,&K);
for(int i=1;i<=K;i++)
  {
  long int aux;
  fscanf(f,"%ld",&aux);
  while(aux<deque[ultimul] && ultimul>=primul)
    ultimul--;
  deque[++ultimul]=aux;
  poz[ultimul]=i;
  }
end=K;
max=deque[1];
for(int i=K+1;i<=N;i++)
  {
  long int aux;
  fscanf(f,"%ld",&aux);
  if(poz[primul]<i-K+1)
    primul++;
  while(aux<deque[ultimul] && ultimul>=primul)
    ultimul--;
  deque[++ultimul]=aux;
  poz[ultimul]=i;
  if(max<deque[primul])
    {max=deque[primul];
    end=i;}
  }
fprintf(g,"%ld %ld %ld",end-K+1,end,max);
fclose(f);
fclose(g);
return 0;
}