Cod sursa(job #891671)

Utilizator adascaluAlexandru Dascalu adascalu Data 25 februarie 2013 18:53:16
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include<algorithm>
#define maxn 5001
#define maxg 10001
using namespace std;
unsigned short int w[maxn],p[maxn];
int a[2][maxg];
int main()
{
    unsigned short int i,n,gr,cw,cl=0,line;
    ifstream f("rucsac.in");
    ofstream g("rucsac.out");
    f>>n>>gr;
    for(i=1;i<=n;++i)
        f>>w[i]>>p[i];
    while(cl<=n)
    {
    line=cl%2;
    if(line)
        for(cw=0;cw<=gr;++cw)
        {
            a[line][cw]=a[line-1][cw];
            if(w[cl+1]<=cw)
                a[line][cw]=max(a[line-1][cw],a[line-1][cw-w[cl+1]]+p[cl+1]);
        }
    else
        for(cw=0;cw<=gr;++cw)
        {
            a[line][cw]=a[line+1][cw];
            if(w[cl+1]<=cw)
                a[line][cw]=max(a[line+1][cw],a[line+1][cw-w[cl+1]]+p[cl+1]);
        }
    cl++;
    }
    g<<a[1][gr];
    f.close();
    g.close();
    return 0;
}