Cod sursa(job #1493556)

Utilizator mitroalexandru mitrofan mitro Data 29 septembrie 2015 17:06:10
Problema Secventa Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <stdio.h>
#include <stdlib.h>
int coada[500000],v[500000];
int main()
{
    FILE *fin,*fout;
    int n,k,i,ad,min,j,valid,max,inceput,sfarsit,prim,ultim;
    fin=fopen("secventa.in","r");
    fout=fopen("secventa.out","w");
    fscanf(fin,"%d %d",&n,&k);

        for(i=0; i<n; i++)

            fscanf(fin,"%d",&v[i]);

        prim=0;
        ultim=1;
        coada[0]=v[0];
        for(i=1;i<k;i++)
        {

            while(v[i]<coada[ultim-1] && ultim>0)
            {
               ultim--;
            }
            coada[ultim]=v[i];
            ultim++;

        }

        max=coada[0];
        inceput=0;
        sfarsit=k-1;
        for(i=k; i<n; i++)
        {

            if(v[i-k]==coada[prim])
            {
                prim++;
            }
            while(v[i]<coada[ultim-1] && ultim>prim)
                ultim--;
            coada[ultim]=v[i];
            ultim++;
            if(coada[prim]>max)
            {
                max=coada[prim];
                inceput=i-k+1;
                sfarsit=i;
            }

        }
        fprintf(fout,"%d %d %d",inceput+1,sfarsit+1,max);


    fclose(fin);
    fclose(fout);

    return 0;
}