Solucion Problema CIIC 2009 | Parcelas
Martes, 25 de Agosto de 2009
Bueno practicando para la OCHI, me tope con los problemas de este año 2009 (aqui) y empeze a hacer algunos ejercicios, pondre solo algunos en el blog, ahora el problema Nº1 “Parcelas”, hecho en C++ y compilado en Linux. No probe mucho el codigo, pero creo que esta bien, , lo dejo para descarga o clicken en seguir leyendo para ver el codigo:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#define ENTRADA "PARCELAS.ENT"
#define SALIDA "PARCELAS.SAL"
using namespace std;
int diferenciaentre(int a,int b);
FILE *entrada,*salida;
int main()
{
entrada=fopen(ENTRADA,"r");
int nparcelas,diferencia;
fscanf(entrada,"%d %d",&nparcelas,&diferencia);
int produccion[nparcelas];
for(int i=0;i<nparcelas;i++){
fscanf(entrada,"%d",&produccion[i]);
}
int resultados[nparcelas];
for(int i_1=0;i_1<nparcelas;i_1++){
resultados[i_1]=0;
for(int z_1=0;z_1<nparcelas;z_1++){
if(diferenciaentre(produccion[i_1],produccion[z_1])<=10){
resultados[i_1]=resultados[i_1]+1;
}
}
}
for(int i_2=0;i_2<nparcelas;i_2++){
for(int z_2=0;z_2<nparcelas;z_2++){
if(resultados[i_2]>resultados[z_2]){
int tmp=resultados[z_2];
resultados[z_2]=resultados[i_2];
resultados[i_2]=tmp;
}
}
}
int resultadototal=(resultados[0]-1);
salida=fopen(SALIDA,"w");
fprintf(salida,"%d",resultadototal);
}
int diferenciaentre(int a,int b){
if(a==b){
return 0;
}
if(a>b){
return (a-b);
}
if(a<b){
return (b-a);
}
return 0;
}