Pagini recente » Cod sursa (job #2065459) | Cod sursa (job #2210342) | Cod sursa (job #763312) | Cod sursa (job #1519262) | Cod sursa (job #334307)
Cod sursa(job #334307)
#include <stdio.h>
#include <stdlib.h>
#define N 1024
#define P 6000
struct generator
{
int a,b;
};
generator v[N];
int g,w,s,cost[P];
char marc[P],salv[P];
void read()
{
scanf("%d%d",&g,&w);
int i;
for (i=1; i<=g; i++)
{
scanf("%d%d",&v[i].a,&v[i].b);
s+=v[i].a;
}
}
void solve()
{
int i,j,t;
marc[0]=1;
for (i=1; i<=g; i++)
{
for (j=0; j<=w; j++)
salv[j]=marc[j];
for (j=0; j<w; j++)
if (marc[j])
{
if (j+v[i].a>=w)
t=w;
else
t=j+v[i].a;
if (marc[t]==0)
{
if (salv[t]==0)
{
salv[t]=1;
cost[t]=cost[j]+v[i].b;
}
else
if (cost[j]+v[i].b<cost[t])
cost[t]=cost[j]+v[i].b;
}
else
if (cost[j]+v[i].b<cost[t])
cost[t]=cost[j]+v[i].b;
}
for (j=0; j<=w; j++)
marc[j]=salv[j];
}
printf("%d\n",cost[w]);
}
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
read();
if (s<w)
printf("-1\n");
else
solve();
return 0;
}