Pagini recente » Cod sursa (job #2961882) | Cod sursa (job #1410873) | Cod sursa (job #1973359) | Cod sursa (job #294666) | Cod sursa (job #2526580)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n,wt,i,j,t[3][10007],ap[10007];
struct valori
{
int wt,p;
}v[10007];
void citire()
{
for(i = 1; i <= n; i++)
fin >> v[i].wt >> v[i].p;
}
bool cmp(valori a, valori b)
{
if(a.wt != b.wt)
return a.wt<b.wt;
else
return a.p<b.p;
}
void p_dinamica()
{
for(i = 1; i <= n; i++)
{
for(j = 1; j <= wt; j++)
if(j < v[i].wt)
t[2][j] = t[1][j];
else
t[2][j] = max(v[i].p+t[1][j-v[i].wt],t[1][j]);
for(j = 1; j <= wt; j++)
t[1][j] = t[2][j];
}
}
void afisare()
{
fout << t[2][wt];
}
int main()
{
fin >> n >> wt;
citire();
sort(v+1,v+n+1,cmp);
p_dinamica();
afisare();
return 0;
}