Pagini recente » Cod sursa (job #701719) | Cod sursa (job #631283) | Cod sursa (job #1641817) | Cod sursa (job #281712) | Cod sursa (job #899306)
Cod sursa(job #899306)
#include <cstdio>
#include<vector>
#include<algorithm>
#include<utility>
#define nmax 1001
using namespace std;
vector<pair <int,int> > gen(nmax);
vector <long> D(5001+nmax);
int n,w,i;
long long cost_total;
void knapsack();
int main()
{
FILE *f,*g;
f=fopen("energii.in","r");
g=fopen("energii.out","w");
fscanf(f,"%d%d",&n,&w);
for(i=1;i<=n;i++)
fscanf(f,"%d%d",&gen[i].first,&gen[i].second),cost_total+=gen[i].second;
if(cost_total<w)
fprintf(g,"%lld",cost_total);
else
knapsack();
fclose(f);
fclose(g);
return 0;
}
void knapsack()
{
long long cw=1,max;
while(1)
{
max=D[cw];
for(i=1;i<=n;i++)
if(gen[i]+D[cw-gen[i].first]>max)
max=v[i]+D[cw-gen[i]].first;
D[cw]=max;
cw++;
if(cw>=w &&D[cw])
return D[cw];
}
}