Pagini recente » Cod sursa (job #1169197) | Cod sursa (job #371555) | Cod sursa (job #1712651) | Cod sursa (job #2304802) | Cod sursa (job #469572)
Cod sursa(job #469572)
# include <fstream>
# define MAX 1000000000
using namespace std;
int n, w, E[1003], C[1003], u[6003][1003], v[6003], es, sol=2*MAX;
void read ()
{
ifstream fin ("energii.in");
fin>>n>>w;
for(int i=1;i<=n;++i)
fin>>E[i]>>C[i], es+=E[i];
}
void solve ()
{
int c, i=1;
for(int i=1;i<=6000;++i)
v[i]=MAX;
while (i<=6000)
{
c=0;
for(int j=1;j<=n;++j)
if (i-E[j]>=0 && !u[i-E[j]][j] && v[i-E[j]]+C[j]<v[i])
{
c=j;
v[i]=v[i-E[j]]+C[j];
}
if (c)
{
u[i][c]=1;
for(int k=1;k<=n;++k)
u[i][k]=u[i-E[c]][k];
}
if(i>=w && v[i]<sol)
sol=v[i];
++i;
}
}
int main()
{
ofstream fout ("energii.out");
read ();
if (es<w)
{
fout<<"-1";
return 0;
}
solve ();
if (sol==2*MAX)
fout<<"-1";
else
fout<<sol;
return 0;
}