Pagini recente » Cod sursa (job #985341) | Cod sursa (job #1326738) | Cod sursa (job #2543890) | Cod sursa (job #2250092) | Cod sursa (job #1609222)
#include <iostream>
#include <fstream>
#include <cmath>
#define maxg 1001
#define maxw 5005
using namespace std;
struct p{int en;int co;}v[maxg];
int min(int x,int y)
{if(x>y)
return y;
return x;
}
int main()
{int a[2][maxw],i,j,g,w,s=0,minim=10000;
fstream f("energii.in",ios::in);
fstream h("energii.out",ios::out);
f>>g>>w;
for(i=1;i<=g;i++)
{f>>v[i].en>>v[i].co;
s=s+v[i].en;}
f.close();
if(s>=w)
{a[0][0]=0;
for(i=1;i<=5001;i++)
a[0][i]=10003;
for(i=1;i<=g;i++)
{
for(j=0;j<=5001;j++)
{
if(v[i].en<=j)
a[1][j]=min(a[0][j],a[0][j-v[i].en]+v[i].co);
if((j>=w)&&(a[1][j]<minim))
minim=a[1][j];
}
for(j=v[i].en;j<=5001;j++)
a[0][j]=a[1][j];
}
h<<minim;
}
else
h<<-1;
h.close();
}