Cod sursa(job #288827)

Utilizator Sorin_IonutBYSorynyos Sorin_Ionut Data 26 martie 2009 09:51:04
Problema Secventa Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>

#define max 500032
#define min -32768
#define IN "secventa.in"
#define OUT "secventa.out"

FILE *fin=fopen(IN,"r");
FILE *fout=fopen(OUT,"w");

int n,k;
int maxim,prima,ultima,st,dr;
int v[max],deque[max];

int main()
{
 int i;

 fscanf(fin,"%d %d",&n,&k);
 for(i=1;i<=n;i++)
  fscanf(fin,"%d",&v[i]);
 fclose(fin);

 for(i=1,maxim=min,st=1,dr=0;i<=n;i++)
 {
  while(st<=dr && v[i]<=v[deque[dr]])
   --dr;

  deque[++dr]=i;

  if(deque[st]==i-k)
   ++st;

  if(i>=k)
   if(v[deque[st]]>maxim)
   {
    maxim=v[deque[st]];
    prima=i-k+1;
    ultima=i;
   }
 }

 fprintf(fout,"%d %d %d",prima,ultima,maxim);
  fclose(fout);

 return 0;
}