Pagini recente » Cod sursa (job #1686044) | Istoria paginii runda/alex002/clasament | Arbori de intervale si aplicatii in geometria computationala | Diferente pentru olimpici intre reviziile 180 si 65 | Cod sursa (job #1121574)
#include <fstream>
#include <cstdio>
using namespace std;
FILE *f = fopen("energii.in", "r");
ofstream G("energii.out");
int g,w,e[1002],c[1002],sol[1002],it,ln;
float rap[1002],maxi=1;
int main()
{
fscanf(f,"%d%d",&g,&w);
for(int i=1;i<=g;i++)
{
fscanf(f,"%d%d",&e[i],&c[i]);
rap[i]=(float)e[i]/(float)c[i];
}
int total=0;
while(total<w&&maxi!=0){
maxi=0;
for(int i=1;i<=g;i++)
{
if(rap[i]>maxi){ it=i; maxi=rap[i];}
}
sol[++ln]=it;
total+=e[it];
}
int dif = total-w;
for(int i=g;i>0;i--)
if(sol[i]<dif){ sol[i]=0; dif-=e[i];}
int cost=0;
for(int i=1;i<=ln;i++) cost+=c[sol[i]];
G<<cost;
return 0;
}