Cod sursa(job #2681556)

Utilizator VladMxPMihaila Vlad VladMxP Data 5 decembrie 2020 19:34:50
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("secventa.in");
ofstream fout ("secventa.out");
int n, k, v[500001], mx = -30001, p1, p2;
deque <int> d;

int main()
{
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> v[i];
    for (int i = 1; i <= n; i++)
    {
        while (!d.empty() && v[d.back()] >= v[i]) d.pop_back();
        d.push_back (i);

        if (d.front() == i - k) d.pop_front();

        if (i >= k)
        {
            if (v[d.front()] > mx)
            {
                mx = v[d.front()];
                p1 = d.front();
                p2 = i;
            }
            else if (v[d.front()] == mx)
            {
                if (d.front() < p1)
                {
                    p1 = d.front();
                    p2 = i;
                }
                else if (d.front() == p1 && i < p2)
                {
                    p1 = d.front();
                    p2 = i;
                }
            }
        }
    }
    fout << p1 << " " << p2 << " " << mx;
}