Cod sursa(job #1320374)

Utilizator Danut99Dinu Danut Danut99 Data 17 ianuarie 2015 22:11:15
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#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>W) output << -1;
    return 0;
}