Cod sursa(job #14620)

Utilizator nemesisIchim Alexandru Eugen nemesis Data 9 februarie 2007 12:47:27
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
#include<stdlib.h>

struct nod{ int e, c; } v[1024];
int n, w;

int cmp(const void *i, const void *j)
{
  nod *ei= (nod*)i,
      *ej= (nod*)j;
  return (ei->c * ej->e)-( ei->e * ej->c);
}

int main()
{
  freopen("energii.in","r",stdin);
  scanf("%d\n%d",&n,&w);
  for(int i=1; i<=n; ++i) scanf("%d %d",&v[i].e, &v[i].c);
  qsort( v+1, n, sizeof(nod), cmp);

//  for(int i=1; i<=n; ++i) printf("%d %d\n",v[i].e,v[i].c);
  int cost=0, i=1;
  while(w>0 && i<=n) {
    cost+= v[i].c;
    w-= v[i].e;
    i++;
  }

  freopen("energii.out","w",stdout);
  if(w<=0) printf("%d\n",cost);
  else printf("-1\n");


  return 0;
}