Pagini recente » Cod sursa (job #918755) | Cod sursa (job #2097677) | Cod sursa (job #2069455) | Cod sursa (job #2144673) | Cod sursa (job #374675)
Cod sursa(job #374675)
#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);
}
int main(){
/* Contor */
int i,ilim,N,K;
/* Sirul de numere citit din fisier */
int* sir;
/* Pointer care imi indica de unde
inceputul secventei raspuns */
int* tmp;
/* Secventa */
int* s;
int sdim;
int sb;
int sbt;
int sdx;
int ssx;
/* Fisier */
FILE* f;
/* 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);
/* Identificam secventa de dim K */
ilim=N-K+1;
tmp=sir;
s=sir;
sdim=K;
sb=baza(s,sdim);
for(i=0;i<ilim;i++){
sbt=baza(tmp,K);
if(sbt>=sb){
s=tmp;
sb=sbt;
sdx=i;
}
tmp++;
}
/* Incercam sa extindem secventa */
tmp=s;
ssx=sdim+sdx;
while(sdx>-1){
--tmp;
if(*tmp>=sb){
s=tmp;
sb=*tmp;
sdim++;
}
else{
break;
}
}
while(ssx<N){
++ssx;
if(s[ssx]>=sb){
sdim++;
}
else{
break;
}
}
/* Afisare rezultate */
f=fopen(FOUT,"w");
for(i=0;i<sdim;i++){
fprintf(f,"%d ",s[i]);
}
fclose(f);
return (0);
}