Pagini recente » Cod sursa (job #566471) | Cod sursa (job #1807483) | Cod sursa (job #1369407) | Cod sursa (job #1847082) | Cod sursa (job #2980770)
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct str
{
int pr,cs;
}a[1001];
int s[15001];
int main()
{
int n,w,maxi=0;
in>>n>>w;
for(int i=1;i<=n;i++)
{
in>>a[i].pr>>a[i].cs;
maxi=max(maxi,a[i].pr);
}
int pmax=w+maxi;
for(int i=1;i<=pmax;i++)
{
s[i]=100000000;
}
s[a[1].pr]=a[1].cs;
int k=a[1].pr;
for(int i=2;i<=n;i++)
{
for(int j=k;j>=1;j--)
{
if(s[j]!=0)
if(j+a[i].pr<=pmax)
{
s[j+a[i].pr]=min(s[j+a[i].pr],s[j]+a[i].cs);
}
}
s[a[i].pr]=min(s[a[i].pr],a[i].cs);
if(k+a[i].pr<=pmax)k+=a[i].pr;
else k=pmax;
}
int minn=100000000;
for(int i=w;i<=pmax;i++)
{
if(s[i]!=0)minn=min(minn,s[i]);
}
if(minn==100000000)out<<-1;
else out<<minn;
return 0;
}