Cod sursa(job #2446752)

Utilizator patrickdanDan patrick patrickdan Data 10 august 2019 17:22:32
Problema Secventa Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>

using namespace std;
FILE *fin,*fout;
int v[500001];
int d[500001];
int main()
{
    fin=fopen("secventa.in","r");
    int n,k,i,st,dr,max1,poz;
    fscanf(fin,"%d%d",&n,&k);
    for(i=1;i<=n;i++)
        fscanf(fin,"%d",&v[i]);
    fclose(fin);
    st=1;dr=0;
    max1=-2000000005;poz=0;
    for(i=1;i<=n;i++)
    {
        if(d[st]==i-k)++st;
        while(st<=dr && v[d[dr]]>=v[i])--dr;
        d[++dr]=i;
        if(i>=k && st<=dr && v[d[st]]>max1)
        {
            max1=v[d[st]];
            poz=i;
        }
    }
    fout=fopen("secventa.out","w");
    fprintf(fout,"%d %d %d",poz-k+1,poz,max1);
    fclose(fout);
    return 0;
}