Cod sursa(job #1493534)

Utilizator mitroalexandru mitrofan mitro Data 29 septembrie 2015 16:31:15
Problema Secventa Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 1.38 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]);

        i=0;
        ad=0;
        while(i<=k)
        {
            min=v[i];
            i++;
            j=i;

            while(i<k)
            {
                if(min>v[i])
                {
                    min=v[i];
                    j=i;
                }

                i++;
            }
            coada[ad]=min;
            ad++;

            i=j+1;

        }
        max=coada[0];
        inceput=0;
        sfarsit=k-1;
        prim=0;
        ultim=ad;
        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;
}