Cod sursa(job #20326)

Utilizator bogdan59Bogdan bogdan59 Data 21 februarie 2007 08:58:50
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>
#include <stdlib.h>
int g, w, en[1002];
float a[1002];

struct gen{
	int energ, pret;
	float rand;
	}v[1000];



void read();
void schimb(gen &a, gen &b);
void sort();

int main(){
FILE *f=fopen("energii.out","w");
int c=0,o=1, ener=0;
read();
sort();
while(ener<w && o<g){
	      c+=v[o].pret;
	      ener+=v[o].energ;
	      o++;
	      }
if(o!=g)fprintf(f,"%d\n",c);
else fprintf(f,"-1\n");
fclose(f);
return 0;
}

/*----------------------------------------*/
void read(){
int i, energ, cost;
FILE *f=fopen("energii.in","r");
fscanf(f,"%d %d",&g,&w);
for(i=1;i<=g;i++){
	fscanf(f,"%d %d",&energ, &cost);
	//n[i]=energ;
	//a[i]=float(energ)/float(cost);
	v[i].energ=energ;
	v[i].pret=cost;
	v[i].rand=float(energ)/float(cost);
	}
fclose(f);
}

/*----------------------------------------*/
void sort(){
int fleg=1, i;
while(fleg){
	fleg=0;
	for(i=1;i<=g;i++){
		 if(v[i].rand<v[i+1].rand){
				//schimb(a[i],a[i+1]);
				//schimb(en[i],en[i+1]);
				schimb(v[i],v[i+1]);
				fleg=1;
				}
		}
	}
}

/*----------------------------------------*/

void schimb(gen &a, gen &b){
gen aux;
aux=a;
a=b;
b=aux;
}