Pagini recente » Cod sursa (job #662746) | Cod sursa (job #1475863) | Cod sursa (job #1768000) | Cod sursa (job #2472649) | Cod sursa (job #1546261)
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct Generator{
int energie, cost;
float rata;
};
Generator gen[5001];
int cmp(Generator g1, Generator g2){
if(g1.rata<g2.rata)
return 1;
if(g1.rata>g2.rata)
return -1;
return 0;
}
int main()
{
FILE *fin=fopen("energii.in", "r");
FILE *fout=fopen("energii.out", "w");
int n, en, c1, c2, e1, e2;
fscanf(fin, "%d%d", &n, &en);
e2=c2=0;
for(int i=1; i<=n; ++i){
fscanf(fin, "%d%d", &gen[i].energie, &gen[i].cost);
gen[i].rata=1.0*gen[i].energie/gen[i].cost;
}
for(int i=1; i<n; ++i){
for(int j=i+1; j<=n; ++j){
if(cmp(gen[i], gen[j])==1){
Generator genaux=gen[i];
gen[i]=gen[j];
gen[j]=genaux;
}
}
}
for(int i=1; i<=n; ++i){
e1=gen[i].energie;
c1=gen[i].cost;
//cout << e1 << " " << c1 << "\n";
if((e1>=e2 && c1<c2) || (e2<en && e1>=en)){
c2=c1;
e2=e1;
}
else if(e1+e2<=en || (e2<en && e1+e2>=en)){
e2+=e1;
c2+=c1;
}
}
if(e2<en)
fprintf(fout, "-1");
else fprintf(fout, "%d", c2);
return 0;
}