Pagini recente » Cod sursa (job #3186676) | Cod sursa (job #1924800) | Cod sursa (job #1935675) | Cod sursa (job #2860528) | Cod sursa (job #2357323)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
const int INF = (1 << 30);
const int NMAX=10005;
int sumag,sumap;
int g[1005],p[1005],c[10005];
int G,W;
void read()
{
fin>>G>>W;
for(int i=1;i<=G;++i)
{
fin>>g[i]>>p[i];
sumag+=g[i];
sumap+=p[i];
}
}
void solve()
{
if(sumag<W) {fout<<-1; return;}
if(sumag==W) {fout<<sumap; return;}
for(int i=1;i<=NMAX;++i) c[i]=INF;
for(int i=1;i<=G;++i)
{
for(int j=NMAX-g[i];j>=0;--j)
if(c[j+g[i]]>c[j]+p[i])
{
c[j+g[i]]=c[j]+p[i];
}
}
int minim=INF;
for(int i=W;i<=NMAX;++i) if(c[i]<minim) minim=c[i];
fout<<minim;
}
int main()
{
read();
solve();
return 0;
}