Pagini recente » Cod sursa (job #2372281) | Cod sursa (job #1667774) | Cod sursa (job #2492734) | Cod sursa (job #730922) | Cod sursa (job #1158590)
#include <fstream>
#include <climits>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int best=0,sol,n,W,E[1001],C[1001],i,j;
struct { int e,c; } a[5001],b[5001];
int main(){
f>>n>>W;
C[0]=INT_MAX;
for(i=1;i<=n;i++){
f>>E[i]>>C[i];
if(E[i]>=W) best=C[i]>C[best]?best:i;
}
for(i=1;i<=n;i++){
for(j=0;j<=W;j++){
a[j].c=b[j].c;
a[j].e=b[j].e;
if(E[i]<=j) if(b[j].c<b[j-E[i]].c+C[i]){
a[j].c=b[j-E[i]].c+C[i];
a[j].e=b[j-E[i]].e+E[i];
}
}
for(j=1;j<=W;j++){ b[j].c=a[j].c;b[j].e=a[j].e; }
}
if(a[W].e>=W) sol=C[best]<a[W].c?C[best]:a[W].c;
else if(best) sol=C[best];
else sol=-1;
g<<sol;
}