Pagini recente » Cod sursa (job #133524) | Monitorul de evaluare | Cod sursa (job #2435543) | Cod sursa (job #2250614) | Cod sursa (job #1336096)
#include <fstream>
#include <algorithm>
using namespace std;
int G,W,E[1003],C[1003],DP[2][10010];
bool u = true;
ifstream fin("energii.in");
ofstream fout("energii.out");
int energii(){
fin >> G >> W;
for(int i = 1; i<=G;i++){
fin >> E[i] >> C[i];
}
for(int i = 1;i<=G;i++){
for(int j = 1;j<=W;j++)
if(E[i] >= j){
DP[u][j] = min(DP[!u][j-E[i]] + C[i],DP[!u][j] + C[i]);
}else DP[u][j] = DP[!u][j];
u = !u;
}
return DP[!u][W];
}
int main(){
energii();
if(DP[!u][W] >= W) fout << DP[!u][W]; else fout << -1;
return 0;
}