Cod sursa(job #2267503)

Utilizator ArsuhArsene Vlad Arsuh Data 23 octombrie 2018 18:36:10
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <deque>

using namespace std;

deque<pair<int, int>> deck;
int n, k;

void rez()
{
    ifstream f("secventa.in");
    ofstream g("secventa.out");

    int x;
    f >> n >> k >> x;
    deck.push_back({x, 1});

    int nr = x, prim, ultim;

    for (int i = 2; i <= n; i++)
    {
        f >> x;

        if (!deck.empty())
        {
            if (x > deck.back().first)
                deck.push_back({x, i});
            else
            {
                while (!deck.empty() && x <= deck.back().first)
                    deck.pop_back();
                deck.push_back({x, i});
            }
        }
        else
            deck.push_back({x, i});

        if (i-k >= deck.front().second)
            deck.pop_front();

        if (i >= k)
            if (deck.front().first > nr)
            {
                nr = deck.front().first;
                ultim = i;
                prim = i - k + 1;
            }
    }

    g << prim << ' ' << ultim << ' ' << nr;
}

int main()
{
    rez();
    return 0;
}