Pagini recente » Cod sursa (job #1757119) | Cod sursa (job #159807) | Cod sursa (job #2522531) | Cod sursa (job #481158) | Cod sursa (job #221060)
Cod sursa(job #221060)
#include<stdio.h>
#define N 1006
#define M 5006
struct energii
{
int energ,cost;
};
int m[M];
bool m1[M];
int g,w,s,s1,min=M;
energii v[N];
int calcul()
{
int i,j;
m[0]=1;
m1[0]=true;
for (i=1; i<=g; ++i)
{
int s2=0;
for (j=s; j>=0; --j)
if (m[j])
{
m[j+v[i].energ]+=v[i].cost;
m1[j+v[i].energ]=true;
if ((min>m[j+v[i].energ])&&(j+v[i].energ>=w))
min=m[j+v[i].energ];
}
}
for (j=s; j>=0; --j)
if (m[j]==min)
return min;
return 0;
}
void citire()
{
scanf("%d%d",&g,&w);
for (int i=1; i<=g; ++i)
{
scanf("%d%d",&v[i].energ,&v[i].cost);
s+=v[i].energ;
s1+=v[i].cost;
}
if (s<w) printf("-1\n");
else
if (s==w) printf("%d \n",s1);
else
printf("%d\n",calcul());
}
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
citire();
}