Pagini recente » Cod sursa (job #1356865) | Cod sursa (job #788816) | Cod sursa (job #3235057) | Cod sursa (job #2151637) | Cod sursa (job #886320)
Cod sursa(job #886320)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream h("energii.out");
struct nod
{
int e;
int c;
}v[1000];
int w,cost[10001],g,s;
void rucsac()
{
int i,j;
for(i=0;i<g;i++)
{
for(j=w-1;j>=0;j--)
if(cost[j]!=-1)
if(cost[j]+v[i].c<cost[j+v[i].e] || cost[j+v[i].e]==-1)
cost[j+v[i].e]=cost[j]+v[i].c;
if(cost[v[i].e]>v[i].c || cost[v[i].e]==-1)
cost[v[i].e]=v[i].c;
}
}
void afis()
{
int i,min=10001;
for(i=w;i<=s;i++)
if(min>cost[i] && cost[i]!=-1)
min=cost[i];
h<<min;
}
void pop()
{
for(int i=0;i<=s;i++)
cost[i]=-1;
}
int main()
{
int i;
f>>g>>w;
for(i=0;i<g;i++)
{
f>>v[i].e>>v[i].c;
s+=v[i].e;
}
if(s<w)
{
h<<-1;
return 0;
}
else if(s>10000)
s=10000;
pop();
rucsac();
afis();
return 0;
}