Pagini recente » Cod sursa (job #859821) | Cod sursa (job #1615211) | Cod sursa (job #1955281) | Cod sursa (job #718423) | Cod sursa (job #1070222)
#include<fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n, gmax, w[5001], p[5001], st[5001], pmax, suma, nr;
int valid(int k)
{
int i;
suma=nr=0;
for(i=1;i<k;i++)
{
if(st[i]==st[k])return 0;
suma+=w[st[i]];
nr+=p[st[i]];
}
nr+=p[st[k]];
suma+=w[st[k]];
if(suma>gmax)return 0;
if(nr<=pmax)return 1;
else return nr;
}
void bkt(int k)
{
int i, rez;
for(i=1;i<=n;i++)
{
st[k]=i;
rez=valid(k);
if(rez)
{
if(rez>1)pmax=rez;
if(k<n)bkt(k+1);
}
}
}
int main()
{
int i;
f>>n>>gmax;
for(i=1;i<=n;i++)f>>w[i]>>p[i];
bkt(1);
g<<pmax;
f.close();
g.close();
return 0;
}