Pagini recente » Cod sursa (job #1189627) | Cod sursa (job #397386) | Cod sursa (job #1565692) | Cod sursa (job #3130223) | Cod sursa (job #1089769)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream is("energii.in");
ofstream os("energii.out");
void Input();
void Knapsack();
void Output();
vector<pair<int,int> > V;
int n,g,sol[10000],smax;
int Solution(99999);
int main()
{
Input();
Knapsack();
Output();
return 0;
}
void Input()
{
int x,y;
is >> n >> g;
for ( int i = 0; i <= g; ++i )
sol[i] = -1;
for ( int i = 1; i <= n; ++i )
{
is >> x >> y;
smax += y;
V.push_back(make_pair(x,y));
}
}
void Knapsack()
{
sol[0] = 0;
for ( int i = 0; i < V.size(); ++i )
for ( int j = g - V[i].second; j >= 0; --j )
if ( sol[j+V[i].second] < sol[j] + V[i].first )
sol[j+V[i].second] = sol[j] + V[i].first;
}
void Output()
{
for ( int i = 0; i <= smax; ++i )
if ( sol[i] >= g )
{
os << i;
break;
}
if ( i > smax )
os << "-1";
}