Cod sursa(job #2328139)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 25 ianuarie 2019 14:11:00
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int n,i,p,u,k,v[500003],b,x,nr,semn=1;
short a[500003],Max=-30005;
char ok,s[3500001];
int main()
{
    f>>n>>k;
    f.get();
    f.get(s,3500000);
    for(i=0;s[i]!=0;i++)
    {
        x=0;
        ok=0;
        if(s[i]=='-')
        {
            semn=-1;
        }
        while(s[i]>='0' && s[i]<='9')
        {
            x=x*10+s[i]-'0';
            i++;
            ok=1;
        }
        if(ok==1)
        {
            a[++nr]=semn*x;
            semn=1;
        }
    }
    p=u=1;
    v[1]=1;
    for(i=2;i<=n;i++)
    {
        while(p<=u && a[i]<a[v[u]])
        {
            u--;
        }
        v[++u]=i;
        if(i-v[p]==k)
        {
            p++;
        }
        if(i>=k && a[v[p]]>Max)
        {
            Max=a[v[p]];
            b=i;
        }
    }
    g<<b-k+1<<" "<<b<<" "<<Max;
    return 0;
}