Mai intai trebuie sa te autentifici.
Cod sursa(job #1150697)
| Utilizator | Data | 23 martie 2014 14:19:30 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.88 kb |
#include<cstdio>
#include<vector>
using namespace std;
#define maxn 5002
#define maxg 10003
unsigned int n,G;
struct pereche{
int gr,pr;
};
vector <int> l1,l2;
pereche P[maxn];
int main(){
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&G);
for(int i=1;i<=n;++i){
scanf("%d%d",&P[i].gr,&P[i].pr);
}
l1.push_back(0);
for(int i=1;i<=G;++i)
if(i==P[1].gr)
l1.push_back(P[1].pr);
else
l1.push_back(l1[i-1]);
l2.push_back(0);
for(int i=2;i<=n;++i){
l2.resize(0);
l2.push_back(0);
for(int j=1;j<=G;++j)
if(j-P[i].gr>=0)
l2.push_back(max(l1[j], l1[j-P[i].gr]+P[i].pr));
else
l2.push_back(l1[j]);
l1=l2;
}
printf("%d",l2[G]);
return 0;
}
