Pagini recente » Cod sursa (job #1040642) | Monitorul de evaluare | Cod sursa (job #2127953) | Cod sursa (job #2687348) | Cod sursa (job #2205041)
#include <fstream>
#include <algorithm>
using namespace std;
int const NM = 15007 , INF = (1 << 30);
char const in [] = "energii.in";
char const out [] = "energii.out";
ifstream cin (in);
ofstream cout (out);
int dp [NM] , sol = (1 << 30);
int main()
{
int n , i , j , a , b , k , from = 0;
cin >> n >> k;
fill (dp + 1, dp + NM + 1 , INF);
for(i = 1 ; i <= n ; ++ i)
{
cin >> a >> b;
for(j = from ; j >= 1 ; -- j)
if(dp [j] != INF)
dp [j + a] = min (dp [j + a] , dp [j] + b);
from = min (k , from + a);
dp [a] = min (dp [a] , b);
}
for(i = k ; i <= NM ; ++ i)
sol = min (sol , dp [i]);
cout << sol << '\n';
return 0;
}