Cod sursa(job #1493218)

Utilizator david.sachelarieDavid Sachelarie david.sachelarie Data 28 septembrie 2015 21:10:30
Problema Secventa Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <stdio.h>
#include <stdlib.h>
int v[500000];
int secv[500000];
int creareSecv(int k){
    int c,min;
    c=0;
    while(c<k){
        secv[c]=v[c];
        c++;
    }
    c=0;
    min=30001;
    while(c<k){
        if(secv[c]<min){
            min=secv[c];
        }
        c++;
    }
    return min;
}
int stabilireMin(int k,int max,int c){
    int csecv,min;
    csecv=1;
    min=30001;
    while(csecv<k){
        if(secv[csecv]<min){
            min=secv[csecv];
        }
        secv[csecv-1]=secv[csecv];
        csecv++;
    }
    secv[k-1]=v[c];
    if(secv[k-1]<min){
        min=secv[k-1];
    }
    return min;
}
int main()
{
    FILE*fin,*fout;
    int n,k,max=-30001,c,inceput,sfarsit,min;
    fin = fopen("secventa.in" ,"r");
    fscanf(fin, "%d%d" ,&n,&k);
    c=0;
    while(c<n){
        fscanf(fin, "%d" ,&v[c]);
        c++;
    }
    fclose(fin);
    max=creareSecv(k);
    inceput=1;
    sfarsit=k;
    c=k;
    while(c<n){
        min=stabilireMin(k,max,c);
        if(min>max){
            max=min;
            sfarsit=c+1;
            inceput=sfarsit-k+1;
        }
        c++;
    }
    fout = fopen("secventa.out" ,"w");
    fprintf(fout, "%d %d %d\n" ,inceput, sfarsit, max);
    fclose(fout);
    return 0;
}