Cod sursa(job #1149446)

Utilizator LegionHagiu Stefan Legion Data 21 martie 2014 21:02:08
Problema Secventa Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
int valoare[500001];
int main()
{
    ifstream intrare("secventa.in");
    ofstream iesire("secventa.out");
    deque<int> coada;
    int n,i,k,maxim=-31000,sus,jos,maximcurent,t;
    intrare>>n;
    intrare>>k;
    for (i=1;i<=n;i++)
    {
        intrare>>valoare[i];
        while ( !coada.empty() && i-coada.front()>=k && valoare[coada.front()]<valoare[i] )
        {
            coada.pop_front();
        }
        if (!coada.empty() && valoare[coada.back()]<valoare[i] && coada.back()-coada.front()>=k )
        {
            while (!coada.empty())
            {
            coada.pop_back();
            }
        }
        coada.push_back(i);
        if (coada.back()-coada.front()>=k-1)
        {
            maximcurent=31000;
        for (t=coada.front();t<=coada.back();t++)
        {
            if (valoare[t]<maximcurent){maximcurent=valoare[t];}
        }
        if (maximcurent>maxim){maxim=maximcurent;sus=coada.front();jos=coada.back();}
        }
    }
    iesire<<sus<<" "<<jos<<" "<<maxim<<"\n";
}