Pagini recente » Cod sursa (job #1103231) | Cod sursa (job #1234158) | Cod sursa (job #1364482) | Cod sursa (job #157938) | Cod sursa (job #674687)
Cod sursa(job #674687)
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int V[10004],N;
int G,Gmax,Gr,Va;
inline int _max(int a,int b){if(a>b)return a;return b;}
int main()
{
int i,gr;
in>>N>>G;
V[0]=1;
for(i=1;i<=N;i++)
{
in>>Gr>>Va;
//iau toate greutatile anterioare si vad daca pot face o valoare mai mare
for(gr=Gmax;gr>=0;--gr)
{
if(!V[gr])continue;//nu am putut forma
V[gr+Gr]=_max(V[gr+Gr],V[gr]+Va);
}
if(Gr+Gmax>G)
Gmax=G;
else Gmax+=Gr;
}
out<<V[G]-1<<'\n';
return 0;
}