Pagini recente » Cod sursa (job #3211830) | Cod sursa (job #665247) | Cod sursa (job #956339) | Cod sursa (job #2406646) | Cod sursa (job #20339)
Cod sursa(job #20339)
#include <stdio.h>
#include <stdlib.h>
int g, w;
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,i=1, min=6000, max=0;
read();
sort();
while(i<=g){
o=i;
while(ener<w && o<=g){
c+=v[o].pret;
ener+=v[o].energ;
o++;
}
if(c<min && ener>w){min=c;max=ener;}
else if(c<min && ener==w){min=c;max=ener;i=g;}
c=0;
ener=0;
i++;
}
if(max>=w)fprintf(f,"%d\n",min);
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);
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(v[i],v[i+1]);
fleg=1;
}
else if(v[i].rand==v[i+1].rand && v[i].energ<v[i+1].energ){
schimb(v[i],v[i+1]);
fleg=1;
}
}
}
}
/*----------------------------------------*/
void schimb(gen &a, gen &b){
gen aux;
aux=a;
a=b;
b=aux;
}
/*----------------------------------------*/