Cod sursa(job #3042184)

Utilizator SSKMFSS KMF SSKMF Data 4 aprilie 2023 16:02:49
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <utility>
#include <deque>
using namespace std;

ifstream cin ("secventa.in");
ofstream cout ("secventa.out");

deque < pair <int , int> > optiuni;

int main ()
{
    int lungime_totala , lungime_secventa;
    cin >> lungime_totala >> lungime_secventa;

    int maxim = -2e9 , inceput = 0 , sfarsit = 0 , valoare;
    for (int indice = 1 ; indice <= lungime_totala ; indice++)
    {
        cin >> valoare;

        while (!optiuni.empty() && valoare <= optiuni.back().first)
            optiuni.pop_back();

        optiuni.push_back(make_pair(valoare , indice));

        if (indice >= lungime_secventa && optiuni.front().first > maxim)
            maxim = optiuni.front().first , inceput = indice - lungime_secventa + 1 , sfarsit = indice;

        if (optiuni.front().second == indice - lungime_secventa + 1)
            optiuni.pop_front();
    }

    cout << inceput << ' ' << sfarsit << ' ' << maxim;
    cout.close(); cin.close();
    return 0;
}