Cod sursa(job #1214870)

Utilizator atatomirTatomir Alex atatomir Data 31 iulie 2014 16:47:49
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <cstdio>
#include <deque>

using namespace std;

struct dequeElem{
    long v;
    long pos;
    dequeElem operator()(long vl,long posl){
        v = vl; pos = posl;
        return *this;
    }
}elem;

long n,i,k,maxi,maxj;
long maxim=-30005,x;
deque<dequeElem> dq;


int main()
{
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);

    scanf("%ld %ld\n",&n,&k);

    for(i=1;i<=n;i++) {
        scanf("%ld",&x);

        if(!dq.empty())
        while(dq.back().v > x){
            dq.pop_back();
            if(dq.empty()) break;
        }
        dq.push_back(elem(x,i));
        while(dq.front().pos <= i-k) dq.pop_front();

        elem = dq.front();
        if(maxim < elem.v){
            maxim = elem.v;
            maxj = i;
            maxi = elem.pos;
        }
    }

    printf("%ld %ld %ld \n",maxi,maxj,maxim);

    return 0;
}