Pagini recente » Cod sursa (job #2375786) | Cod sursa (job #170174) | Cod sursa (job #2080054) | Cod sursa (job #1842589) | Cod sursa (job #900703)
Cod sursa(job #900703)
#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;
long long 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,"d",-1);
else
fprintf(g,"%lld",knapsack());
fclose(f);
fclose(g);
return 0;
}
long long knapsack()
{
long long cw,j;
bool ok=true;
for(cw=1;ok;cw++)
{
for(j=1;j<=n;j++)
if(j>cw)
D[cw]=max(D[cw],D[j-cw]+gen[j].second);
else
D[cw]=max(D[cw],(long)gen[j].second);
if(cw>=w &&D[cw])
ok=0;
}
return D[cw];
}