Cod sursa(job #2090349)

Utilizator AlexGAlexandru Gheorghe AlexG Data 17 decembrie 2017 22:27:52
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <deque>

using namespace std;

struct Numar
{
    int valoare;
    int pozitie;
};

int main()
{
    int numarNumere, lungimeSecventa;
    ifstream fin ("secventa.in");
    fin >> numarNumere >> lungimeSecventa;
    int inceputSecventa=0, sfarsitSecventa=0, bazaMaxima=-30001;
    deque<Numar> dequeCrescator;
    for(int i=1; i<=numarNumere; ++i)
    {
        Numar numar;
        fin >> numar.valoare;
        numar.pozitie = i;
        while(!dequeCrescator.empty() && numar.valoare <= dequeCrescator.front().valoare)
            dequeCrescator.pop_front();
        dequeCrescator.push_front(numar);
        if(dequeCrescator.back().pozitie == i-lungimeSecventa)
            dequeCrescator.pop_back();
        if(i>=lungimeSecventa && dequeCrescator.back().valoare>bazaMaxima)
        {
            bazaMaxima = dequeCrescator.back().valoare;
            inceputSecventa = i-lungimeSecventa+1;
            sfarsitSecventa = i;
        }
    }
    ofstream fout("secventa.out");
    fout << inceputSecventa << ' ' << sfarsitSecventa << ' ' << bazaMaxima;
    return 0;
}