Cod sursa(job #1376013)

Utilizator MarcSpataruMarc Spataru MarcSpataru Data 5 martie 2015 15:30:17
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<cstdio>
#include<algorithm>
using namespace std;
struct energii
{
   int energie,cost;
};
energii v[1002];
bool sortare(energii a,energii b)
{
   if(a.energie==b.energie)
      return a.cost<b.cost;
   return a.energie<b.energie;
}
int vec[10001];
int main()
{
   freopen("energii.in","r",stdin);
   freopen("energii.out","w",stdout);
   int G,W,contor,k,i,min,s;
   scanf("%d%d",&G,&W);
   for(contor=1;contor<=G;contor++)
   {
      scanf("%d%d",&v[contor].energie,&v[contor].cost);
   }
   sort(v+1,v+G+1,sortare);
   for(k=1;k<=G;k++)
   {
      min=-1;
      for(i=10001;i>=1;i--)
      {
         if(vec[i]!=0)
         {
            min=vec[i]+v[k].cost;
            if(vec[i+v[k].energie]==0)
               vec[i+v[k].energie]=min;
            if(min<vec[i+v[k].energie])
            {
               min=s;
               vec[i+v[k].energie]=min;
            }
         }
      }
      if(vec[v[k].energie]==0)
         vec[v[k].energie]=v[k].cost;
      if(vec[v[k].energie]>v[k].cost)
         vec[v[k].energie]=v[k].cost;
   }
   for(i=W;i<=10001;i++)
      if(vec[i]!=0)
      {
         printf("%d",vec[i]);
         break;
      }
   return 0;
}