Cod sursa(job #2663985)

Utilizator plugaruaPlugaru Andrei plugarua Data 27 octombrie 2020 18:36:05
Problema Energii Scor 15
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#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&&flag==false)
   {
       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(e_actuala+G_list[i].energie<=e_maxima&&!flag)
       {

            e_actuala+=G_list[i].energie;
            c_actual+=G_list[i].cost;
       }
       i++;
   }
fclose(fp);
 fp = fopen("energii.out", "w");
      fprintf(fp,"%d",(int)c_actual);
fclose(fp);
    return 0;
}