Cod sursa(job #1991663)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 17 iunie 2017 22:19:32
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int v[500002],dq[500002];
int main()
{
    char s[3500005];
    int n,k,i,st=1,dr=0,maxim=INT_MIN,pi=0;
    f>>n>>k;
    f.get();
    f.getline(s,3500001);
    int l=strlen(s),p=1;
    for(i=0;i<l;i++)
    {
        int semn=1;
        if(s[i]=='-')
            semn=0,i++;
        while('0'<=s[i]&&s[i]<='9')
            {
                v[p]=v[p]*10+s[i]-48;
                i++;
            }
        if(semn==0)
            v[p]=v[p]*(-1);
        p++;
    }
    for(i=1;i<=n;i++)
    {
        while (st <= dr && v[i] <= v[ dq[dr] ]) dr--;
        dq[++dr] = i;
        if (dq[st] == i-k) st++;
        if (i >= k)
        {
            if(v[dq[st]]>maxim)
                maxim=v[dq[st]],pi=i-k+1;
        }
    }
    g<<pi<<" "<<pi+k-1<<" "<<maxim;
    return 0;
}