Cod sursa(job #1253106)

Utilizator lucian.okapiNestian Lucian-Dan lucian.okapi Data 31 octombrie 2014 20:12:59
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int n,W;

struct gen
{
    int e,c;
} a[200];

void QUICKSORT(int inf,int sup)
{
  int x,i,j;gen t;
  i=inf;
  j=sup;
  x=a[(i+j)/2].c;
  do{
    while ((i<sup)&&(a[i].c<x)) i++;
    while ((j>inf)&&(a[j].c>x)) j--;
    if (i<=j)
    {
      t=a[i];
      a[i]=a[j];
      a[j]=t;
      i++;
      j--;
    }
  }while (i<=j);
  if (inf<j) QUICKSORT(inf,j);
  if (i<sup) QUICKSORT(i,sup);
}
int cst[2000];

void Rez()
{
    fin>>n>>W;
    int i;
    for(i=1;i<=n;i++)
        fin>>a[i].e>>a[i].c;
    QUICKSORT(1,n);
    int q=W;i=1;
    for(i=1;i<=n;i++)
    {
        q=W;
        while(q > 0)
        {
            q-=a[i].e;
            cst[i]+=a[i].c;
        }
    }
    int j;
    int mini=999999;
    for(i=1;i<=n;i++)
    {
        if(mini>cst[i])
        {
            mini=cst[i];
            j=i;
        }
    }

    if(a[j].e<W)
        fout<<-1;
    else
    fout<<mini;

}
int main()
{
    Rez();
    return 0;
}