Pagini recente » Cod sursa (job #1788002) | Cod sursa (job #195366) | Cod sursa (job #1721170) | Cod sursa (job #2311260) | Cod sursa (job #1698305)
#include <fstream>
#include <iostream>
#include <algorithm>
std::ifstream f("energii.in");
std::ofstream g("energii.out");
const int INF = 10000000;
/*int * a = new int[10001];
int * b = new int[10001];*/
int matrix[1003][5003];
int cost[5003];
int energ[5003];
int G,W;
long testSum;
void read(){
f >> G;
f >> W;
for(int i = 1 ; i <= G ; ++i){
f >> energ[i] >> cost[i];
testSum += energ[i];
}
}
void calculate(){
for(int i = 1 ; i <= W ; ++i){
matrix[0][i] = INF;
}
for(int p = 1; p <= G ; ++p){
for(int j = 1; j <= W ; ++j ){
if(j < energ[p]){
matrix[p][j] = std::min(cost[p], matrix[p-1][j]);
}else{
matrix[p][j] = std::min(matrix[p-1][j], matrix[p - 1][j - energ[p]] + cost[p]);
}
}
}
}
int main(){
read();
if(testSum < W){
g <<"-1";
}else{
calculate();
g<<matrix[G][W];
}
f.close();
g.close();
return 0;
}