Cod sursa(job #374661)

Utilizator nomemoryAndrei Ciobanu nomemory Data 17 decembrie 2009 18:23:12
Problema Secventa Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.6 kb
#include <stdio.h>
#include <stdlib.h>

#define FIN "secventa.in"
#define FOUT "secventa.out"

int baza(int*,int);

/* Returneaza minimum-ul dintr-un sir secventa */
int baza(int* secv,int dim){
        int i,min;
        min=secv[0];
        for(i=1;i<dim;i++){
               if(min>secv[i]){
                       min=secv[i];
               }
        }
        return (min);
}

/* Main */
int main(){
        /* Variabile */
        int i,j,jlim,N,K,srbt;
        int* sir;
        int* tmp;
        FILE* f;

        /* Secventa raspuns + dimensiunea + baza */
        int* sr;
        int srdim,srb;

        /* Citim date fis intrare */
        f=fopen(FIN,"r");
        fscanf(f,"%d",&N);
        fscanf(f,"%d",&K);

        /* Citim sirul din fisier */
        sir=(int*)calloc(N,sizeof(int));
        for(i=0;i<N;i++){
                fscanf(f,"%d",&sir[i]);
        }
        fclose(f);

        /* Algoritm */
        sr=sir;
        srdim=K;
        srb=baza(sr,srdim);
        for(i=K;i<N;i++){
                tmp=sir;
                jlim=N-i+1;
                for(j=0;j<jlim;j++){
                        srbt=baza(tmp,i);
                        if(srb<srbt){
                                sr=tmp;
                                srdim=i;
                                srb=srbt;
                        }
                        tmp++;
                }
        }

        /* Scrie fisier output */
        f=fopen(FOUT,"w");
        for(i=0;i<srdim;i++){
                fprintf(f,"%d ",sr[i]);
        }
        fclose(f);

        return (0);
}