Pagini recente » Cod sursa (job #2703609) | Cod sursa (job #2747220) | Cod sursa (job #871559) | Cod sursa (job #11011) | Cod sursa (job #2980760)
#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;
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)
{
if(s[j+a[i].pr]!=0)s[j+a[i].pr]=min(s[j+a[i].pr],s[j]+a[i].cs);
else s[j+a[i].pr]=s[j]+a[i].cs;
}
}
if(s[a[i].pr]!=0)s[a[i].pr]=min(s[a[i].pr],a[i].cs);
else 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;
}