Cod sursa(job #2326561)

Utilizator NoemikulcsarKulcsar Noemi Noemikulcsar Data 23 ianuarie 2019 17:35:21
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>

using namespace std;
int c[500002],n,k,i,Max=-2000000,poz,t,p=1,OK,m;
short int v[500002];
char u[100005];
int main()
{
    ifstream f("secventa.in");
    ofstream g("secventa.out");

    f>>n>>k; f.get();
    while(f)
    {
        f.get(u,100000);
        for(i=0;u[i];i++)
        {
            if(u[i]!=' ')
            {
                if(u[i]=='-')
                    OK=1;
                else
                m=m*10+u[i]-48;
            }
            else
            {
                if(OK==1)
                    m=-1*m;
                v[++t]=m;
                OK=0;
                m=0;
            }
        }
    }
     if(OK==1)
    m=-1*m;
    v[++t]=m;
    OK=0;
    m=0;
    t=0;

    for(i=1;i<=k;i++)
    {
        while(t>=p && v[c[t]]>v[i])
            t--;
        c[++t]=i;
    }
        Max=v[c[1]]; poz=1;

    for(i=k+1;i<=n;i++)
    {
        if(i-c[p]>=k)
            p++;
        while(t>=p && v[c[t]]>v[i])
            t--;
        c[++t]=i;
        if(v[c[p]]>Max)
        {
            Max=v[c[p]];
            poz=i;
            OK=1;
        }
    }
    if(OK)
    g<<poz-k+1<<' '<<poz<<' '<<Max;
    else
    g<<1<<' '<<k<<' '<<Max;

    return 0;
}