Pagini recente » Cod sursa (job #1774985) | Cod sursa (job #1346757) | Cod sursa (job #733880) | Istoria paginii utilizator/lostsoul | Cod sursa (job #2205792)
#include <fstream>
using namespace std;
ifstream in ("energii.in");
ofstream out ("energii.out");
int d[5010];
int main()
{
int n,w,j,i,e,c;
in>>n>>w;
for(i=1;i<=n;i++)
{
in>>e>>c;
for(j=w-1;j>=1;j--)
{
if(d[j])
{
if(j+e<=w)
{
if(d[j+e])
d[j+e]=min(d[j+e],d[j]+c);
else
d[j+e]=d[j]+c;
}
else
{
if(d[w+2])
d[w+2]=min(d[w+2],d[j]+c);
else
d[w+2]=d[j]+c;
}
}
}
if(e<=w){
if(d[e])
d[e]=min(d[e],c);
else
d[e]=c;
}
else
{
if(d[w+2])
d[w+2]=min(d[w+2],c);
else
d[w+2]=c;
}
}
int mn=999999999;
for(i=w+2;i>=w;i--)
{
if(d[i] && d[i]<mn)
mn=d[i];
}
if(mn!=999999999)
out<<mn;
else
out<<-1;
return 0;
}