Cod sursa(job #993664)

Utilizator blasterzMircea Dima blasterz Data 4 septembrie 2013 11:41:28
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
  #include<cstdio>
  #include<algorithm>
  using namespace std;
  int v[5001], p[5001],dp[2][10001],G,n;
  void citire(){
       freopen("rucsac.in", "r", stdin);
       scanf("%d %d ", &n, &G);
       for(int i = 1; i <= n; ++i)
           scanf("%d %d", &v[i], &p[i]);
  }
  void solve(){
      int i=0,j=0,result=0;
      dp[0][0]=0;
      int P = 0, Q = 1;
      for(i = 1; i <= n; ++i) {
         for(j = 1; j <= G; ++j) {
              dp[Q][j] = dp[P][j];
              if (j - v[i] >= 0)
                dp[Q][j] = max(dp[Q][j], dp[P][j - v[i]] + p[i]);
        
         }
        P ^= 1; Q ^= 1;   
     }
        
      for(i = 1; i <= G; ++i)result = max(result, dp[P][i]);
      printf("%d\n", result);
  }
 int main(){
     freopen("rucsac.out", "w", stdout);
      citire();
      solve();
}