Pagini recente » Cod sursa (job #3248580) | Borderou de evaluare (job #2451036) | Cod sursa (job #1126751) | Cod sursa (job #2450709) | Cod sursa (job #1542565)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct elem
{
int eg, cg;
};
const int inf = 100000;
elem a[1002];
int n, w;
int p[5002];
int main()
{
int i, j;
in >> n >> w;
for ( i = 1; i <= n; i++ )
in >> a[i].eg >> a[i].cg;
for ( i = 1; i <= w; i++ )
p[i] = inf;
p[0] = 0;
for ( i = 1; i <= n; i++ )
for ( j = w+a[i].eg-1; j >= a[i].eg; j-- )
if ( p[j-a[i].eg] != inf )
{
if ( j >= w )
if ( p[j-a[i].eg] + a[i].cg < p[w] )
p[w] = p[j-a[i].eg] + a[i].cg;
else;
else
if ( p[j-a[i].eg ] +a[i].cg < p[j] )
p[j] = p[j-a[i].eg ] +a[i].cg;
}
if ( p[w] != inf )
out << p[w];
else out <<'-1'
return 0;
}