Pagini recente » Cod sursa (job #179353) | Cod sursa (job #2342392) | Cod sursa (job #1233755) | Cod sursa (job #1328495) | Cod sursa (job #1097267)
#include <fstream>
#define nmax 5003
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, Gmax;
int G[nmax], p[nmax];
int pmax[2][nmax*3];
void citire();
void afisare();
void pd();
int main(){
citire();
pd();
return 0;
}
void citire(){
int i;
fin>>n>>Gmax;
for(i=1; i<=n; i++)
fin>>G[i]>>p[i];
}
void pd(){
int i, g, lcrt=0, lurm=1, maxim=0;
for(g=1; g<=Gmax; g++)
if(G[1]<=g)
pmax[lcrt][g]=p[1];
for(i=2; i<=n; i++){
for(g=1; g<=Gmax; g++){
pmax[lurm][g]=pmax[lcrt][g];
if(G[i]<=g && (p[i]+pmax[lcrt][g-G[i]]>pmax[lurm][g]))
pmax[lurm][g]=p[i]+pmax[lcrt][g-G[i]];
if(pmax[lurm][g]>maxim)
maxim=pmax[lurm][g];
}
lcrt=1-lcrt;
lurm=1-lurm;
}
fout<<maxim<<'\n';
fout.close();
}