Pagini recente » Cod sursa (job #898465) | Cod sursa (job #206734) | Cod sursa (job #68333) | Cod sursa (job #1850098) | Cod sursa (job #1907371)
#include <fstream>
#include <vector>
using namespace std;
struct object{
int c, g;
}aux;
vector<object> v;
int n, t;
int r[2][10010];
bool ok = 1;
void read()
{
ifstream fin ("rucsac.in");
fin >> n >> t;
v.push_back(aux);
for(int i = 1; i <= n; ++i){
fin >> aux.g >> aux.c;
v.push_back(aux);
}
fin.close();
}
int max(int x, int y)
{
return (x > y ? x : y);
}
void solve()
{
for (int i = 1; i <= n; ++i)
if(ok){
for (int j = 0; j <= t; ++j)
if(v[i].g <= j)
r[1][j] = max(r[0][j-v[i].g] + v[i].c, r[0][j]);
else r[1][j] = r[0][j];
ok = 0;
}else{
for (int j = 0; j <= t; ++j)
if(v[i].g <= j)
r[0][j] = max(r[1][j-v[i].g] + v[i].c, r[1][j]);
else r[0][j] = r[1][j];
ok = 1;
}
}
void write()
{
ofstream fout ("rucsac.out");
fout << r[1-ok][t] << "\n";
fout.close();
}
int main()
{
read();
solve();
write();
return 0;
}