Cod sursa(job #27439)

Utilizator fireatmyselfBogdan-Alexandru Stoica fireatmyself Data 6 martie 2007 14:13:43
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
FILE* f= fopen("secventa.in", "rt");
FILE* g = fopen("secventa.out", "wt");
long int 
contor=0,deque[500001],primul=1,ultimul,N,K,max,PozInit,PozFin,poz[500001];

inline void sterge_ultimul()
{ultimul--;
}

inline void sterge_primul()
{
primul++;
}

inline void adauga(long int info, long int p)
{ultimul++;
deque[ultimul]=info;
poz[ultimul] = p;}

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