Pagini recente » Cod sursa (job #2083729) | Cod sursa (job #2452857) | Cod sursa (job #1140322) | Cod sursa (job #589958) | Cod sursa (job #2445098)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <climits>
#define f first
#define s second
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int g,w,sol[5005];
pair <int,int> e[1005];
int main()
{
in>>g>>w;
for(int i=1;i<=g;i++)
{
in>>e[i].f>>e[i].s;
}
sort(e+1,e+g+1);
for(int i=1;i<=w;i++)
{
sol[i]=INT_MAX;
}
for(int i=1;i<=g;i++)
{
for(int j=w;j>=0;j--)
{
if(sol[j]!=INT_MAX)
{
if(j+e[i].f<=w)
sol[j+e[i].f]=min(sol[j+e[i].f],e[i].s+sol[j]);
else sol[w]=min(sol[w],e[i].s+sol[j]);
}
}
if(e[i].f>w)
sol[w]=min(sol[w],e[i].s);
}
if(sol[w]!=INT_MAX)
out<<sol[w];
else out<<-1;
return 0;
}