Pagini recente » Cod sursa (job #3227455) | Cod sursa (job #1311875) | Cod sursa (job #244358) | Cod sursa (job #420501) | Cod sursa (job #445280)
Cod sursa(job #445280)
#include <cstdio>
#include <cstring>
#define file_in "energii.in"
#define file_out "energii.out"
#define Nmax 5000
int g,w;
int v[Nmax];
int eg[Nmax];
int cg[Nmax];
void citire()
{
int i;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &g, &w);
for (i=1;i<=g;++i)
scanf("%d %d", &eg[i],&cg[i]);
}
inline int min(int a, int b) { return a<b?a:b; }
void solve()
{
int i,j,m=0x3f3f3f3f;
memset(v,-1,sizeof(v));
v[0]=0;
for (i=1;i<=g;++i)
for (j=w;j>=0;--j)
if (v[j]!=-1)
{
if (j+eg[i]<=w)
{
if (v[j+eg[i]]>v[j]+cg[i] || v[j+eg[i]]==-1)
v[j+eg[i]]=v[j]+cg[i];
}
if (j+eg[i]>w)
{
if (m>v[j]+cg[i])
m=v[j]+cg[i];
}
}
if (m==0x3f3f3f3f || v[w]==-1)
printf("-1\n");
else
{
/*if (m!=0x3f3f3f3f && v[w]==-1)
printf("%d\n", m);
else
if (m==0x3f3f3f3f && v[w]!=-1)
printf("%d\n",v[w]);
else
printf("%d", min(m,v[w]));*/
printf("%d\n", (m<v[w]?m:(v[w]==-1?m:v[w])));
}
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}