Cod sursa(job #27368)

Utilizator k_ounu_eddyIacob Eduard k_ounu_eddy Data 6 martie 2007 13:00:43
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 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;

inline void sterge_ultimul()
{ultimul--;
contor--;}

inline void sterge_primul()
{
contor--;
primul=ultimul-K+1;
}

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

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