Pagini recente » Cod sursa (job #168449) | Cod sursa (job #3324414) | Cod sursa (job #3347049) | Cod sursa (job #2006877) | Cod sursa (job #3356206)
#include <fstream>
const int NMAX=1005;
const int SMAX=15001;
const int INF=1e9;
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int n,s;
int v[NMAX],c[NMAX];
int sume[SMAX],cost[SMAX],smax;
void init()
{
for(int i=0;i<SMAX;i++)
cost[i]=INF;
}
int main()
{
in>>n;
in>>s;
for(int i=1;i<=n;i++)
{
in>>v[i];
in>>c[i];
}
init();
smax=0;
sume[0]=1;
cost[0]=0;
for(int i=1;i<=n;i++)
{
for(int j=smax;j>=0;j--)
{
if(j+v[i]<SMAX && sume[j]!=0)
{
sume[j+v[i]]=1;
cost[j+v[i]]=min(cost[j+v[i]],cost[j]+c[i]);
smax=max(smax,j+v[i]);
}
}
}
int sol_c=1e9;
while(s<=smax)
{
if(sume[s]!=0)
sol_c=min(sol_c,cost[s]);
s++;
}
if(sol_c==1e9)
out<<-1;
else
out<<sol_c;
return 0;
}