Cod sursa(job #1493661)

Utilizator iomanea2002isaIoana Manea iomanea2002 Data 29 septembrie 2015 19:14:19
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <stdio.h>
int m[5000000];
int v[5000000];
int n, k, st=0, dr=0, i;
void stanga(int i){
  if(m[st]==i-k)
    st++;
}
void dreapta(int i){
  while(st<dr && v[i]<v[m[dr-1]])
    dr--;
  m[dr++]=i;
}

int main()
{FILE *fin, *fout;
 fin=fopen("secventa.in", "r");
 fout=fopen("secventa.out", "w");
 fscanf(fin, "%d %d", &n, &k);
 int max=-300001, p1, p2, j;
 for(i=0;i<n;i++){
   fscanf(fin, "%d", &v[i]);
   stanga(i);
   dreapta(i);
   if(i>=k-1 && v[m[st]]>max){
     max=v[m[st]];
     p1=i-k+1;
   }
 }
 fprintf(fout, "%d %d %d", p1+1, p1+k, max);
    return 0;
}