Cod sursa(job #1902603)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 4 martie 2017 18:10:47
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#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;
}