Cod sursa(job #1848258)

Utilizator PondorastiAlex Turcanu Pondorasti Data 15 ianuarie 2017 18:06:37
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX=5000,GMAX=10000;
int w[NMAX+5],p[NMAX+5],n,g,dp[2][GMAX+5],k=0;
int main() {
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    scanf("%d%d",&n,&g);
    for(int i=1;i<=n;i++) {
        scanf("%d%d\n",&w[i],&p[i]);}
    for(int i=1;i<=n;i++,k=1-k) {
        for(int cw=0;cw<=g;++cw) {
            dp[1-k][cw]=dp[k][cw];
            if(w[i]<=cw)
                dp[1-k][cw]=max(dp[1-k][cw],dp[k][cw-w[i]]+p[i]);}}
    printf("%d",dp[k][g]);
    return 0;}