Pagini recente » Cod sursa (job #1943340) | Cod sursa (job #1116531) | Cod sursa (job #1799968) | Cod sursa (job #2753324) | Cod sursa (job #2760074)
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
const int N = 1000, S = 10 * N * N + 1;
int n, u, e[N], c[N], sC, dp[S], sE, ans = S;
int main(){
f >> n >> u;
for(int i = 0; i < n; i++){
f >> e[i] >> c[i];
sC += c[i];
sE += e[i];
}
f.close();
if(sE >= u){
for(int j = 1; j <= sC; j++)
dp[j] = -1;
for(int i = 0; i < n; i++){
for(int j = u - e[i]; j >= 0; j--){
if(dp[j] != -1)
dp[j + e[i]] = max(dp[j + e[i]], dp[j] + c[i]);
}
}
for(int j = u; j <= min(u + 10 * N, sE); j++){
if(dp[j] != -1)
ans = min(ans, dp[j]);
}
g << ans;
}else
g << -1;
g.close();
}