Cod sursa(job #811808)

Utilizator BalcauIonutFMI-Balcau Ionut BalcauIonut Data 12 noiembrie 2012 22:31:14
Problema Secventa Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<cstdio>
#include<deque>
using namespace std;


int main(){
    int a[500001];
    deque<int> q;
    int s=-(1<<30),mn=0,i,k,n;
    freopen("secventa.in","r",stdin);
    scanf("%d%d",&n,&k);
    for(i=1;i<=k;++i){
        scanf("%d",a+i);
        while(!q.empty() && a[i]<a[q.back()])
            q.pop_back();
        q.push_back(i);
    }
        s=a[q.front()]; mn=q.front();
    for(i=k+1;i<=n;++i){
         scanf("%d",a+i);
         if(q.front()==i-k)
            q.pop_front();

        while(!q.empty() && a[i]<a[q.back()])
            q.pop_back();
        q.push_back(i);

        if(a[q.front()]>s){
        s=a[q.front()]; mn=q.front();
        }
    }
    int kmn=mn;
    while(a[mn-1]>=s && mn>1) --mn;
    while(kmn-mn<k-1 && kmn<n) ++kmn;
    freopen("secventa.out","w",stdout);
    printf("%d %d %d",mn,kmn,s);
return 0;
}