Pagini recente » Cod sursa (job #1664234) | Cod sursa (job #1630128) | Cod sursa (job #583484) | Cod sursa (job #1698395) | Cod sursa (job #2845708)
#include<fstream>
#include<iostream>
#include<climits>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
//ifstream f("in.in");
//ofstream g("out.out");
ifstream f("energii.in");
ofstream g("energii.out");
int d[20005],energie[10005],greutate[10005];
int indiceMaxim = 0,n,G;
int main()
{
f>>n;
f>>G;
d[0]=0;
for(int i=1;i<=n;i++){
f>>energie[i]>>greutate[i];
}
for(int i=1;i<=20000;i++)
d[i]=-1;
for(int i=1;i<=n;i++){
for(int j=indiceMaxim;j>=0;j--){
if(d[j]!=-1){
if(d[energie[i]+j]!=-1)
d[energie[i]+j] = min(d[j] + greutate[i],d[energie[i]+j]);
else
d[energie[i]+j] = d[j] + greutate[i];
indiceMaxim = max(indiceMaxim,min(G,energie[i]+j));
}
}
}
int mini = INT_MAX;
for(int i=20000;i>=G;i--){
if(d[i]!=-1)
{
mini = min(mini,d[i]);
}
}
if(mini == INT_MAX)
g<<-1;
else
g<<mini;
//for(int i=0;i<=20000;i++)
//cout<<d[i]<<'\n';
f.close();
g.close();
return 0;
}