Pagini recente » Cod sursa (job #1628971) | Cod sursa (job #1381700) | Cod sursa (job #2507250) | Cod sursa (job #2777545) | Cod sursa (job #2659372)
#include <fstream>
#define MAX 1000000000
using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
struct ura
{
int e,c;
};
ura v[1001];
int suma[15001];
int main()
{
int i,n,maxi, W, j,pozmax, pp, gasit;
cin>>n>>W;
maxi=0;
for(i=1;i<=n;i++)
{
cin>>v[i].e>>v[i].c;
if(v[i].e>maxi)
maxi=v[i].e;
}
maxi=15000;
for(i=1;i<=maxi;i++)
suma[i]=MAX;
pozmax=0;
for(i=1;i<=n;i++)
{
for(j=maxi;j>=1;j--)
if(suma[j]!=MAX)
if(j+v[i].e <= maxi)
if(suma[j+v[i].e]>suma[j]+v[i].c)
suma[j+v[i].e]=suma[j]+v[i].c;
if(suma[v[i].e]>v[i].c)
suma[v[i].e]=v[i].c;
}
pp=1;
if(suma[W]!=MAX)
{
pp=0;
cout<<suma[W];
}
else
{
i=W+1;
gasit=0;
while(i<=maxi && gasit==0)
if(suma[i]!=MAX)
{
cout<<suma[i];
gasit=1;
}
else
i++;
if(gasit==1)
pp=0;
}
if(pp==1)
cout<<-1;
return 0;
}