Cod sursa(job #1013549)

Utilizator hevelebalazshevele balazs hevelebalazs Data 21 octombrie 2013 09:49:59
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#include <queue>
#define N 500000
#define fr(i,a,b) for(int i=a;i<b;++i)
using namespace std;
deque<int>q;
int a[N];
int main(){
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    int n,k;
    int mv,ml,mr;
    mv=-33333;
    scanf("%i%i",&n,&k);
    fr(i,0,n){
        scanf("%i",a+i);
        while(!q.empty()&&q.front()>a[i]) q.pop_front();
        q.push_front(a[i]);
        if(i>=k-1){
            int m=q.back();
            if(m==a[i-k+1]) q.pop_back();
            if(m>mv){mv=m;mr=i;ml=i-k+1;}
            }
        }
    while(ml&&a[ml-1]>mv) --ml;
    printf("%i %i %i",ml+1,mr+1,mv);
    return 0;
    }