Cod sursa(job #2090344)

Utilizator AlexGAlexandru Gheorghe AlexG Data 17 decembrie 2017 22:24:00
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 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, sfarsitSecventa, bazaMaxima;
    Numar numar;
    fin >> numar.valoare;
    numar.pozitie = 1;
    bazaMaxima = numar.valoare;
    deque<Numar> dequeCrescator;
    dequeCrescator.push_front(numar);
    for(int i=2; 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;
}