Cod sursa(job #812464)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 13 noiembrie 2012 21:30:29
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#define NMAX 500002
#define LIM (1<<15)
#define Verifica ++poz == LIM ? in.read(text,LIM) ,poz = 0 : 0
using namespace std;

ifstream in("secventa.in");
ofstream out("secventa.out");

int Deque[NMAX],S,F = -1;
int V[NMAX],N,K;

/************************/
char text[LIM+2];
int poz;
inline void Citeste(int &nr)
{
    if(text[poz]=='\0')
        in.read(text,LIM);
    else for(;text[poz]<'0'||text[poz]>'9';Verifica);
    for(;!(text[poz]<'0'||text[poz]>'9' ); nr=nr*10+text[poz]-'0',Verifica);
}

/************************/
int main()
{
    int i,Baza = -NMAX,Final;
    Citeste(N),Citeste(K);
    for(i=1;i<=N;++i)
    {
        Citeste(V[i]);
        if(i - Deque[S] >=K)
            ++S;
        while(F>=S&&V[i]<=V[Deque[F]])
            --F;
        Deque[++F] = i;
        if(i>=K&&V[Deque[S]]>Baza)
            Baza = V[Deque[S]], Final = i;
    }
    out<<Final - K + 1<<' '<<Final<<' '<<Baza<<'\n';
    return 0;
}