Cod sursa(job #1335171)

Utilizator acomAndrei Comaneci acom Data 5 februarie 2015 10:23:46
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream>
using namespace std;
#define NMAX 500005
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,k,p,u,pm,um,m=-30001,A[NMAX],D[NMAX];
char a[7*NMAX],*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()
{
    int i;
    fin>>n>>k; fin.get();
    fin.getline(a,7*NMAX);
    q=a;
    p=1, u=0;
    for (i=1;i<=n;++i)
    {
        citeste(A[i]);
        while (p<=u && A[i]<A[D[u]])
            --u;
        D[++u]=i;
        if (i>=k && m<A[D[p]])
            pm=i-k+1, um=i, m=A[D[p]];
        if (D[p]+k-1<=i)
            ++p;
    }
    fout<<pm<<" "<<um<<" "<<m<<"\n";
    return 0;
}