Cod sursa(job #1181176)

Utilizator alevasluialeHuhurez Marius alevasluiale Data 1 mai 2014 23:54:57
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <deque>
#define lmax 5000000
using namespace std;
deque <int> d;
char buf[lmax];
int main()
{   freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    int n,k,i,x=0,y,j=0,sol=-100000000;
    scanf("%d %d\n",&n,&k);
    int v[n];
    fgets(buf,lmax,stdin);
    y=k;
    for(i=1;i<=n;i++)
    {
        v[i]=0;
        while(buf[j]!=' ' && buf[j]!='\n') v[i]=v[i]*10+buf[j]-'0',j++;
        j++;
        while(!d.empty()&&v[i]<=v[d.back()]) d.pop_back();
        d.push_back(i);
        if(d.front()==i-k) d.pop_front();
        if(v[d.front()]>sol&&i>=k)
        {
            sol=v[d.front()];
            x=i-k+1;
            y=i;
        }

    }
    printf("%d %d %d\n",x,y,sol);
}