Pagini recente » Cod sursa (job #2348484) | Cod sursa (job #1110970) | Cod sursa (job #686909) | Cod sursa (job #279401) | Cod sursa (job #2756646)
#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=0;i<=w+5;i++)
d[i]=-1;
for(i=1;i<=n;i++)
{
in>>e>>c;
for(j=w-1;j>=1;j--)
{
if(d[j]!=-1)
{
if(j+e<=w)
{
if(d[j+e]!=-1)
d[j+e]=min(d[j+e],d[j]+c);
else
d[j+e]=d[j]+c;
}
else
{
if(d[w+2]!=-1)
d[w+2]=min(d[w+2],d[j]+c);
else
d[w+2]=d[j]+c;
}
}
}
if(e<=w){
if(d[e]!=-1)
d[e]=min(d[e],c);
else
d[e]=c;
}
else
{
if(d[w+2]!=-1)
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]!=-1 && d[i]<mn)
mn=d[i];
}
if(mn!=999999999)
out<<mn;
else
out<<-1;
return 0;
}