Pagini recente » Cod sursa (job #3196930) | Cod sursa (job #392559) | Cod sursa (job #186205) | Cod sursa (job #1619916) | Cod sursa (job #677793)
Cod sursa(job #677793)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxN 5005
#define INF 0x3f3f3f3f
int N , P , c[maxN] , p[maxN] , a[maxN][maxN];
int main ()
{
freopen ("energii.in" , "r" , stdin);
freopen ("energii.out" , "w" , stdout);
scanf ("%d %d" , &N , &P);
for (int i = 1 ; i <= N ; ++i)
scanf ("%d %d" , &p[i] , &c[i]);
for (int i = 1 ; i <= P ; ++i)
if (i <= p[1])
a[1][i] = c[1];
for (int i = 1 ; i <= N ; ++i)
for (int j = 1 ; j <= P ; ++j)
if (!a[i][j])
a[i][j] = INF;
for (int i = 2 ; i <= N ; ++i)
for (int j = 1 ; j <= P ; ++j)
if (p[i] <= j)
a[i][j] = min (a[i - 1][j] , a[i - 1][j - p[i]] + c[i]);
else
a[i][j] = min (a[i - 1][j] , c[i]);
if (a[N][P] == INF)
{
printf ("-1");
return 0;
}
printf ("%d" , a[N][P]);
return 0;
}