Cod sursa(job #1388710)

Utilizator alexmarMarinescu Alexandru alexmar Data 15 martie 2015 17:40:13
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<iostream>
#include<fstream>

using namespace std;
int n,k,a[500050],d[500050],ind;
char as[3500050],*q;
void citeste(int &nr)
{
    int sgn=0;
    nr=0;
    while (*q==' ') ++q;
    if (*q=='-') sgn=1, ++q;
    for (;'0'<=*q && *q<='9';++q)
        nr=nr*10+*q-'0';
    if (sgn) nr=-nr;
}
int main()
{
    ifstream fin("secventa.in");
    ofstream fout("secventa.out");
     int f=1,b=0,m=-30001;
    fin>>n>>k;fin.get();
    fin.getline(as,3500050);
    q=as;
    for(int i=1;i<=n;++i){
        citeste(a[i]);
        while((f<=b)&&(a[i]<=a[d[b]]))--b;
        d[++b]=i;
        if(d[f]==i-k)++f;
        if(i>=k&&a[d[f]]>m){
                m=a[d[f]];
                ind=i;
            }
    }
    fout<<ind-k+1<<" "<<ind<<" "<<m;
    return 0;
}