Pagini recente » Cod sursa (job #198768) | Monitorul de evaluare | Istoria paginii runda/a_b | Cod sursa (job #881937) | Cod sursa (job #1320372)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
void quickSort(int e[1001], int c[1001], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = e[(left + right) / 2]/c[(left + right) / 2];
/* partition */
while (i <= j) {
while (e[i]/c[i]< pivot)
i++;
while (e[j]/c[j]> pivot)
j--;
if (i <= j) {
tmp = e[i];
e[i] = e[j];
e[j] = tmp;
tmp = c[i];
c[i] = c[j];
c[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(e,c, left, j);
if (i < right) quickSort(e,c, i, right);
}
int main()
{
int G,W,E[1001],C[1001],s=0,c=0;
ifstream input("energii.in");
ofstream output("energii.out");
input >> G >> W;
for(int i=0; i<G; i++){
input >> E[i] >> C[i];
}
quickSort(E,C,0,G-1);
for(int i=0; i<G; i++){
s=s+E[i];
c=c+C[i];
if (s >= W) {
output << c;
break;}
}
if(s==0) output << -1;
return 0;
}