Cod sursa(job #1492192)

Utilizator mitroalexandru mitrofan mitro Data 27 septembrie 2015 12:00:32
Problema Secventa Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 1.87 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;
    fin=fopen("secventa.in","r");
    fout=fopen("secventa.out","w");
    fscanf(fin,"%d %d",&n,&k);
    if(k==1)
    {
        max=0;
        inceput=0;
        for(i=0; i<n; i++)
        {
            fscanf(fin,"%d",&v[i]);
            if(max<v[i])
            {
                inceput=i;
                max=v[i];
            }
        }
        fprintf(fout,"%d %d %d",inceput+1,inceput+1,max);

    }
    else
    {


        for(i=0; i<n; i++)
        {
            fscanf(fin,"%d",&v[i]);
        }
        i=0;
        ad=0;
        while(i!=k-1)
        {
            min=v[i];
            i++;
            j=i;

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

                i++;
            }
            coada[ad]=min;
            ad++;
            if(valid==1)
            {
                max=min;
                inceput=0;
                sfarsit=k-1;
            }
            i=j;

        }

        prim=1;
        for(i=k; i<n; i++)
        {

            if(v[i-k]==coada[0])
            {
                for(j=0; j<ad-1; j++)
                {
                    coada[j]=coada[j+1];
                }
                ad--;
            }
            while(v[i]<coada[ad-1] && ad>0)
                ad--;
            coada[ad]=v[i];
            ad++;
            if(coada[0]>max)
            {
                max=coada[0];
                inceput=i-k+1;
                sfarsit=i;
            }

        }
        fprintf(fout,"%d %d %d",inceput+1,sfarsit+1,max);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}