Cod sursa(job #931317)

Utilizator iuli1505Parasca Iuliana iuli1505 Data 28 martie 2013 10:09:35
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<cstdio>
#include<deque>
#include<cstring>
#define nmax 500010
using namespace std;
deque<int>q;
int n,k,i,x[nmax],crt,sol=-30010,ok,poz,nr;
char sir[4000000],sep[]=" ",*p,s[7];
int main()
{
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    scanf("%d%d\n", &n, &k);
    fgets(sir,4000000,stdin);
    p=strtok(sir,sep);
    while(p)
    {
        ok=1;poz=0;++nr;
        strcpy(s,p);
        if(s[0]=='-'){ok=0;poz=1;}
        for(i=poz;i<strlen(s);++i)
            x[nr]=x[nr]*10+(s[i]-'0');
        if(ok==0)x[nr]=-x[nr];
        p=strtok(NULL,sep);

    }
    for(i=1;i<=n;i++)
    {
        while(q.size()&&x[q.back()]>=x[i])
            q.pop_back();
        q.push_back(i);
        if(q.front()==i-k)
            q.pop_front();
        if(i>=k&&x[q.front()]>sol)
        {
            sol=x[q.front()];
            crt=i;
        }
    }
    printf("%d %d %d\n", crt-k+1, crt, sol);
    return 0;
}