Pagini recente » Cod sursa (job #3225257) | Cod sursa (job #2485950) | Cod sursa (job #2197213) | Cod sursa (job #949843) | Cod sursa (job #895307)
Cod sursa(job #895307)
#include <fstream>
#include <stdio.h>
#define MAX_G 10000
using namespace std;
int N,G;
int P[MAX_G+5],V[MAX_G+5];
void PD(int k,int g,int p){
int i,n=G-g,s;
for(i=0;i<=n;i++){
s=g+i;
if(V[i]&&V[i]!=k){
if(P[s]<P[i]+p){
P[s]=P[i]+p;
V[s]=k;
}
}
}
// printf("intrat\n");
}
void write(){
int i;
for(i=0;i<=G;i++){
printf("%d -> %d %d\n",i,P[i],V[i]);
}
}
void Read(){
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d %d\n",&N,&G);
int i,g,p;
V[0]=-1;
for(i=1;i<=N;i++){
scanf("%d %d\n",&g,&p);
PD(i,g,p);
}
fclose(stdin);
//write();
for(i=G;i>=0;i++)
if(V[i]){
printf("%d",P[i]);
fclose(stdout);
return;
}
}
int main()
{
Read();
return 0;
}