Cod sursa(job #2124853)
| Utilizator | Data | 7 februarie 2018 17:45:02 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include<bits/stdc++.h>
using namespace std;
int n,g,a,b,c[10000][10000];
pair <int,int> r[10000];
int main(){
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
cin>>n>>g;
for(int i=1;i<=n;i++){
cin>>a>>b;
r[i]=make_pair(a,b);
}
sort(r+1,r+n+1);
for(int i=1;i<=g;i++)
c[1][i]=r[1].second;
for(int i=2;i<=n;i++)
for(int j=1;j<=g;j++){
if(r[i].first>j) c[i][j]=c[i-1][j];
else c[i][j]=max(c[i-1][j],c[i-1][j-r[i].first]+r[i].second);
}
cout<<c[n][g];
return 0;
}
