Pagini recente » Cod sursa (job #1007062) | Cod sursa (job #585772) | Cod sursa (job #2502161) | Cod sursa (job #3256062) | Cod sursa (job #2217267)
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
typedef struct nume{
int cant;
int cost;
float efic;
} numere;
bool how_to_sort(numere a, numere b){ return a.efic <b.efic ;}
int main()
{
ifstream in;
in.open("energii.in");
ofstream out;
out.open("energii.out");
int nr,i,energia;
numere arr[10001];
in >> nr >> energia;
for(i = 0; i != nr ; i++ ){
in >> arr[i].cant >> arr[i].cost;
arr[i].efic = (float)arr[i].cost / arr[i].cant;
}
sort(arr,arr+nr,how_to_sort);
int sum = 0,rasp = 0;
for(i = 0; i != nr ; i++ ){
int r_par = rasp;
int s_par = sum;
sum += arr[i].cant;
rasp += arr[i].cost;
if(sum == energia) break;
if(sum > energia) {
for(int j = 1; i+j!=nr ; j++)
if(s_par + arr[i + j].cant >= energia && r_par + arr[i+j].cost<rasp){
rasp = r_par + arr[i+j].cost;
}
break;
}
}
if(sum < energia) out <<"-1"<<endl;
out << rasp <<endl;
return 0;
}