Cod sursa(job #1803743)

Utilizator Vlad1111Sbengheci Vlad-Andrei Vlad1111 Data 11 noiembrie 2016 19:19:21
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <cstdio>
#include <deque>
#define MAX 500005
#define cout cerr
using namespace std;

int n,k,val,sf,a[MAX];
char b[MAX*10];
deque <int> q;

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

    scanf("%d %d\n",&n,&k);
    a[0]=-30005;
    val=0;

    gets(b);
    int y,z;
    y=0;
    for(int i=1; i<=n; i++)
    {
        if(b[y]=='-')
            z=-1,y++;
        else z=1;
        a[i]=0;
        while(b[y]>='0' && b[y]<='9')
            a[i]=a[i]*10+b[y]-'0',y++;
        a[i]*=z;
        y++;

        while(!q.empty() && a[q.back()]>=a[i])
            q.pop_back();
        if(!q.empty() && q.front()+k<=i)
            q.pop_front();
        q.push_back(i);
        if(i>=k)
            if(a[q.front()]>a[val])
                val=q.front(),sf=i;
    }
    printf("%d %d %d",sf-k+1,sf,a[val]);
    return 0;
}