Cod sursa(job #1715032)

Utilizator liviu23Liviu Andrei liviu23 Data 9 iunie 2016 21:46:30
Problema Problema rucsacului Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

int n,g,dp[3005],cursor;
char buff[255];

void read(int &nr) {
    nr=0;
    while(buff[cursor]<'0'||buff[cursor]>'9')
        cursor++;
    while(buff[cursor]>='0'&&buff[cursor]<='9')
        nr=nr*10+(buff[cursor]-'0'),cursor++;
}

int main()
{
    ios_base::sync_with_stdio(false);
    ifstream fin("rucsac.in");
    ofstream fout("rucsac.out");
    fin.getline(buff,255);
    read(n),read(g);
    int w,p;
    for(int i=1;i<=n;i++) {
        cursor=0;
        fin.getline(buff,255);
        read(w),read(p);
        for(int j=g;j>w;j--)
            if(dp[j-w]+p>dp[j]&&dp[j-w])
                dp[j]=dp[j-w]+p;
        if(p>dp[w])
            dp[w]=p;
    }
    int maxim=0;
    for(int i=1;i<=g;i++)
        if(dp[i]>maxim)
            maxim=dp[i];
    fout<<maxim<<'\n';
    return 0;
}