Cod sursa(job #2191743)

Utilizator AndreiDeltaBalanici Andrei Daniel AndreiDelta Data 3 aprilie 2018 16:32:32
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream go("rucsac.out");
int N,G,g[5001],pret[5001],m[3][5001];

int main()
{
    f>>N>>G;
    for(int i=1;i<=N;i++) f>>g[i]>>pret[i];
    for(int i=1;i<=N;i++)
        for(int j=0;j<=G;j++)
          {
              if(i%2!=0)
               {
                 m[1][j]=m[2][j];
                 if(g[i]<=j)
                 m[1][j]=max(m[1][j],pret[i]+m[2][j-g[i]]);
               }
               else
               {
                   m[2][j]=m[1][j];
                 if(g[i]<=j)
                 m[2][j]=max(m[2][j],pret[i]+m[1][j-g[i]]);
               }
          }
    if(m[1][G]<m[2][G]) go<<m[2][G];
    else go<<m[1][G];
    return 0;
}