Cod sursa(job #526111)

Utilizator giuliastefGiulia Stef giuliastef Data 27 ianuarie 2011 13:59:27
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
//Secventa

#include <fstream>
#define MAXN 500050
using namespace std;
int n,k,a[MAXN],deque[MAXN];
int main()
{
    int i,front,back,maxim,start,finish;
    ifstream f("secventa.in");
    ofstream g("secventa.out");
    f>>n>>k;
    for(i=1;i<=n;i++)
     f>>a[i];
    front=1,back=0;
    maxim=0,start=0,finish=0;
    for(i=1;i<=k;i++)
    {
     while(front<=back && a[i]<a[deque[back]]) back--;
     deque[++back]=i;
    }
    maxim=a[deque[front]];
    start=1;
    finish=k;
    for(;i<=n;i++)
    {
      while(front<=back && a[i]<a[deque[back]]) back--;
      deque[++back]=i;
      if(deque[front]==i-k) front++;
      if(a[deque[front]]>maxim)
      {
       maxim=a[deque[front]];
       start=i-k+1;
       finish=i;
      }
    }
    g<<start<<" "<<finish<<" "<<maxim<<"\n";
    f.close();
    g.close();
    return 0;
}