Cod sursa(job #2217267)

Utilizator vadim171098vadim pislari vadim171098 Data 29 iunie 2018 19:47:17
Problema Energii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#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;

}