Cod sursa(job #27948)

Utilizator k_ounu_eddyIacob Eduard k_ounu_eddy Data 7 martie 2007 12:41:44
Problema Secventa Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
long int N,K,deque[500001],poz[400000],primul=1,ultimul,max,end;
FILE *f=fopen("secventa.in","rt");
FILE *g=fopen("secventa.out","wt");

int main()
{
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;
}