Cod sursa(job #2204951)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 17 mai 2018 12:54:44
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <bitset>

using namespace std;
FILE *fin=fopen ("secventa.in","r");
FILE *fout=fopen ("secventa.out","w");
int n,k,i,u,p,d[500010],v[500010],ok,maxi,maxok,dr;

int main()
{
    fscanf(fin,"%d%d",&n,&k);
    maxi=-30010;
    for(i=1;i<=n;i++)
        fscanf (fin,"%d",&v[i]);
    ok=0;
    p=1;
    u=1;
    d[p]=1;
    for(i=2;i<=n;i++)
    {
        while(p<=u&&v[i]<=v[d[u]])
            u--;
        u++;
        d[u]=i;
        if(i-d[p]==k)
            p++;
        if(i>=k)
        {
            ok++;
            if(maxi<v[d[p]])
            {
                maxi=v[d[p]];
                maxok=ok;
            }
        }
    }
    fprintf (fout,"%d %d %d",maxok, maxok+k-1, maxi);
    //fout<<maxok<<" "<<maxok+k-1<<" "<<maxi;
    return 0;
}