Pagini recente » Cod sursa (job #2834512) | Cod sursa (job #1424313) | Cod sursa (job #2385598) | Cod sursa (job #3248566) | Cod sursa (job #2664037)
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
struct Generator
{
double energie;
double cost;
double coef;
};
struct Generator G_list[1001];
void sort(int size)
{
struct Generator temp;
int i,j;
for(i=0;i<size-1;i++)
for(j=0;j<size-1-i;j++)
if(G_list[j].coef<G_list[j+1].coef)
{
temp=G_list[j];
G_list[j]=G_list[j+1];
G_list[j+1]=temp;
}
}
int main()
{
float e_actuala,e_maxima,c_actual,w;
bool flag=false;
int g,i,j;
FILE *fp;
fp = fopen("energii.in", "r");
fscanf(fp,"%d",&g);
fscanf(fp,"%f",&w);
e_maxima=w;
for(int i=0;i<g;i++)
{
fscanf(fp,"%lf %lf",&G_list[i].energie,&G_list[i].cost);
G_list[i].coef=G_list[i].energie / G_list[i].cost;
}
sort(g);
i=0;
while(e_actuala<e_maxima && i<g)
{
for(j=i;j<g;j++)
if(e_actuala+G_list[j].energie>=e_maxima)
{
e_actuala+=G_list[i].energie;
c_actual+=G_list[i].cost;
flag=true;
break;
}
if(flag==false)
{
e_actuala+=G_list[i].energie;
c_actual+=G_list[i].cost;
}
i++;
}
// if(e_actuala<e_maxima) c_actual=-1;
fclose(fp);
fp = fopen("energii.out", "w");
fprintf(fp,"%d",(int)c_actual);
fclose(fp);
return 0;
}