Cod sursa(job #1635667)
| Utilizator | Data | 6 martie 2016 19:28:44 | |
|---|---|---|---|
| Problema | Energii | Scor | 5 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <fstream>
#include <algorithm>
using namespace std;
int D[2][5003], E[1010], C[1010],G ,W,sum;
bool u=0;
ifstream cin("energii.in");
ofstream cout("energii.out");
int main(){
cin >> G >> W;
for (int i = 1; i <= G; i++){
cin >> E[i] >> C[i];
sum += E[i];
}
for (int i = 1; i <= G; i++,u = !u)
for (int j = 1; j <= W; j++){
D[u][j] = D[!u][j];
if(j >= E[i]){
D[u][j] = max(D[!u][j],D[!u][j-E[i]]+C[i]);
}
}
if(sum < W) cout << -1;
else cout<<D[!u][W];
return 0;
}
