Cod sursa(job #2090366)

Utilizator AlexGAlexandru Gheorghe AlexG Data 17 decembrie 2017 23:09:21
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>
#include <deque>
#include <sstream>
#include <iostream>

using namespace std;

struct Numar
{
    int valoare;
    int pozitie;
};

char sirNumere[3000000];
int main()
{
    int numarNumere, lungimeSecventa;
    ifstream fin ("secventa.in");
    fin.getline(sirNumere, 3000000);
    istringstream iss(sirNumere);
    iss >> numarNumere >> lungimeSecventa;
    int inceputSecventa=0, sfarsitSecventa=0, bazaMaxima=-30001;
    deque<Numar> dequeCrescator;
    fin.getline(sirNumere, 3000000);
    istringstream iff(sirNumere);
    cout<<sirNumere;
    for(int i=1; i<=numarNumere; ++i)
    {
        Numar numar;
        iff >> 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;
}