Pagini recente » Cod sursa (job #455413) | Cod sursa (job #358182) | Cod sursa (job #1327280) | Cod sursa (job #382998) | Cod sursa (job #2116330)
#include <fstream>
using namespace std;
ifstream fi("energii.in");
ofstream fo("energii.out");
int i,j,n,w;
int mi=10001;
int e[1002],c[1002];
int dp[1001][5001];
void af1(){for(int i=1;i<=n;i++){for(int j=1;j<=w;j++) fo<<dp[i][j]<<" ";fo<<'\n';}fo<<'\n';}
int main()
{
fi>>n>>w;
for(i=1;i<=n;i++) fi>>e[i]>>c[i];
for(i=1;i<=n;i++) for(j=1;j<=w;j++){
if(e[i]>=j) {
if(dp[i-1][j]!=0) dp[i][j]=min(dp[i-1][j],c[i]);
else dp[i][j]=c[i];
}
int x;
x=j-e[i];
if(dp[i][j]!=0 and dp[i-1][x]!=0) dp[i][j]=min(dp[i][j],c[i]+dp[i-1][x]);
else if(dp[i-1][x]!=0) dp[i][j]=c[i]+dp[i-1][x];
if((dp[i][j]>dp[i-1][j] and dp[i-1][j]!=0) or dp[i][j]==0) dp[i][j]=dp[i-1][j];
}
//af1();
for(i=1;i<=n;i++) if(dp[i][w]!=0) mi=min(mi,dp[i][w]);
fo<<mi;
return 0;
}