Pagini recente » Cod sursa (job #954857) | Monitorul de evaluare | Cod sursa (job #2846936) | Cod sursa (job #873313) | Cod sursa (job #1777846)
#include <fstream>
#define e first
#define p second
using namespace std;
short int G, W, i, j;
int P[10000001], sol, lim, s;
pair <short int, short int> v[1001];
ifstream fin("energii.in");
ofstream fout("energii.out");
int main(){
fin>>G>>W;
for(i=1;i<=G;i++){
fin>>v[i].e>>v[i].p;
s+=v[i].e;
}
for(i=1;i<=10000;i++)
P[i]=10000100;
P[0]=0;
sol=10000100;
lim=W;
for(i=1;i<=G;i++)
for(j=s;j>=0;j--)
if(P[j]!=10000100){
P[j+v[i].e] = min(P[j]+v[i].p, P[j+v[i].e]);
if(j+v[i].e>=W) {
if(sol>P[j+v[i].e])
sol=P[j+v[i].e];
}
}
if(sol==10000100)
fout<<"-1";
else
fout<<sol;
return 0;
}