Pagini recente » Cod sursa (job #1266982) | Cod sursa (job #2319867)
#include <iostream>
#include <fstream>
using namespace std;
void insertionsort(int val[], int wt[], int n)
{
for (int i = 1; i < n; i++)
{
int key = val[i], wkey = wt[i];
int k = i - 1;
while (k >= 0 && key < val[k])
{
val[k+1] = val[k]; wt[k+1] = wt[k];
k--;
}
val[k+1] = key;
wt[k+1] = wkey;
}
}
int knapsack(int val[], int wt[], int n, int c)
{
if (n == 0 || c == 0)
return 0;
if (wt[n-1] > c)
return knapsack(val, wt, n-1, c);
else return max(val[n-1] + knapsack(val, wt, n-1, c-wt[n-1]), knapsack(val, wt, n-1, c));
}
int main()
{
ifstream f;
f.open("rucsac.in");
ofstream g;
g.open("rucsac.out");
int n, c;
f >> n >> c;
int val[5000], wt[5000];
for (int i = 0; i < n; i++)
f >> wt[i] >> val[i];
insertionsort(val, wt, n);
g << knapsack(val, wt, n, c);
f.close();
g.close();
return 0;
}