Pagini recente » Cod sursa (job #1335487) | Cod sursa (job #2044625) | Cod sursa (job #2911253) | Cod sursa (job #1321231) | Cod sursa (job #2472346)
#include <iostream>
#include <fstream>
#define NMAX 1000
#define GMAX 15000
#define INF 1<<30
std::ifstream fin("energii.in");
std::ofstream fout("energii.out");
int N, P;
int energy[1 + NMAX];
int cost[1 + NMAX];
int dp[2][1 + GMAX];
int main() {
//std::cin >> N >> P;
fin >> N >> P;
for ( int i = 1; i <= N; ++i )
//std::cin >> energy[i] >> cost[i];
fin >> energy[i] >> cost[i];
for ( int c = 0; c <= P; ++c ) {
if ( energy[1] < c )
dp[1][c] = INF;
else
dp[1][c] = cost[1];
}
for ( int i = 2; i <= N; ++i ) {
for ( int c = 0; c <= P; ++c ) {
int r = c - energy[i];
int tmp = 0;
if ( r > 0 )
tmp = dp[(i - 1) % 2][r];
dp[i % 2][c] = std::min(tmp + cost[i], dp[(i - 1) % 2][c]);
}
}
int ans = dp[N%2][P];
if ( ans == INF )
//std::cout << -1;
fout << -1;
else
//std::cout << ans;
fout << ans;
//std::cout << '\n';
fout << '\n';
return 0;
}