Cod sursa(job #2591342)

Utilizator bem.andreiIceman bem.andrei Data 30 martie 2020 12:53:47
Problema Secventa Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;
ifstream r("secventa.in");
ofstream w("secventa.out");
deque<int>d;
int v[500002];
int main()
{
    int n, k;
    r>>n>>k;
    for(int i=0; i<n; i++)
    {
        r>>v[i];
    }
    v[n]=-30000;
    int maxim=-30000, x=0, y=0, xf=0, yf=0;
    d.push_front(v[0]);
    while(y<n)
    {
        if(y-x+1<k)
        {
            y++;
            while(v[y]<d.back() && d.size()!=0)
            {
                d.pop_back();
            }
            d.push_back(v[y]);
        }
        else
        {
            if(v[x]==d.front())
            {
                d.pop_front();
            }
            while(v[y+1]<d.back() && d.size()!=0)
            {
                d.pop_back();
            }
            d.push_back(v[y+1]);
            if(d.front()>maxim)
            {
                maxim=d.front();
                xf=x+1;
                yf=y+1;
            }
            else if(d.front()==maxim)
            {
                if(x+1<xf)
                {
                    xf=x+1;
                    yf=y+1;
                }
                else if(x+1==xf)
                {
                    if(y+1<yf)
                    {
                        xf=x+1;
                        yf=y+1;
                    }
                }
            }
            x++;
            y++;
        }
    }
    w<<xf+1<<" "<<yf+1<<" "<<maxim;
    return 0;
}