Pagini recente » Cod sursa (job #2842527) | Cod sursa (job #1777228) | Cod sursa (job #1946360) | Cod sursa (job #2983175) | Cod sursa (job #1336122)
#include <fstream>
using namespace std;
int G,W,E[1003],C[1003],DP[2][10010],h,N;
bool u = true;
ifstream fin("energii.in");
ofstream fout("energii.out");
int min(int a,int b){
if(a == 0) return b;
else if(b == 0) return a;
else if(a > b) return b; else return a;
}
int energii(){
fin >> G >> W;
for(int i = 1; i<=G;i++){
fin >> E[i] >> C[i];
}
for(int i = 1;i<=G;i++){
h+=E[i];
if(h < W) N = h;else N = W;
for(int j = 1;j<=N;j++){
if(E[i] < j){
DP[u][j] = min(DP[!u][j-E[i]] + C[i],DP[!u][j]);
}else if (DP[!u][j] == 0) DP[u][j] = C[i];
else DP[u][j] = min(C[i],DP[!u][j]);
}
u = !u;
}
return DP[!u][W];
}
int main(){
fout << energii();
return 0;
}