Cod sursa(job #1594125)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 9 februarie 2016 11:02:20
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>
#include <deque>

#define NMax 500005
using namespace std;

deque<int> deq;
int n,k,a[NMax],mx,K,inc,sf;

int main()
{
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    scanf("%d%d",&n,&K);
    for(int i = 1; i <= n; ++i){
        scanf("%d",&a[i]);
    }
    for(int k = K; k <= n; ++k){

        for(int i = 1; i <= n; ++i){
            if(!deq.empty() && a[i] <= a[deq.back()]){
                deq.pop_back();
            }
            deq.push_back(i);

            if(deq.front() == i - k)
                deq.pop_front();
            if(i >= k){
                if(a[deq.front()] > mx){
                    mx = a[deq.front()];
                    inc = deq.front();
                    sf = deq.back();
                }
            }
        }
        while(!deq.empty())
            deq.pop_back();
    }
    printf("%d %d %d",inc,sf,mx);
    return 0;
}