Pagini recente » Cod sursa (job #2595473) | Cod sursa (job #2623063) | Cod sursa (job #1721161) | Cod sursa (job #1677396) | Cod sursa (job #1589965)
#include <fstream>
#include <cmath>
#include <vector>
#include <set>
#include <algorithm>
#include <cstring>
#include <map>
#include <iomanip>
#include <time.h>
#include <stdio.h>
#include <bitset>
#define MAX 500000000000
//#include <iostream>
using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
int DP[2][5006005];
int main()
{
int n, s, x[1004], y[1005], g;
cin >> n >> g;
s = 0;
for(int i = 1; i <= n; i++){
cin >> x[i] >> y[i];
s += x[i];
}
if(s < g)
{
cout << -1;
return 0;
}
int l = 0;
for(int i = 0; i <= 1; i++)
for(int j = 0; j <= s; j++)
DP[i][j] = 1<<30;
for(int i = 1; i <= n; i++, l = 1 - l){
for(int j = 0; j <= g; j++){
if(j <= x[i])
DP[l][j] = min(DP[1 - l][j], y[i]);
else
DP[l][j] = min(DP[1 - l][j], DP[1 - l][j - x[i]] + y[i]);
}
}
/*for(int i = 0; i <= 2; i++){
for(int j = 1; j <= g; j++)
cout << DP[i][j] << " ";
cout << "\n";
}*/
cout << min(DP[0][g], DP[1][g]);
return 0;
}