Cod sursa(job #2210066)

Utilizator testsursaSurseTest testsursa Data 5 iunie 2018 16:09:21
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;
ifstream cin("secventa.in");
ofstream cout("secventa.out");
int v[500005],n,i,que[2*500005],k,sol=-300001,poss=300001,posd=300001;
int main()
{
    cin>>n>>k;
    for(i=1;i<=n;i++)
        cin>>v[i];
    int st=500001,dr=500000;
    for(i=1;i<=n;i++)
    {
        while(st<=dr && i-que[st]+1>k)
            st++;

        while(st<=dr&&v[i]<v[que[dr]])
            dr--;

        que[++dr]=i;

        if(sol<v[que[st]])
        {
            sol=v[que[st]];
            poss=que[st];
            posd=i;
        }
        else if(sol==v[que[st]])
        {
            if(poss>que[st])
            {
                poss=que[st];
                posd=i;
            }
            else if(poss==que[st])
            {
                if(posd<i)
                    posd=i;
            }
        }
    }
    cout<<poss<<" "<<posd<<" "<<sol;

    return 0;
}