Cod sursa(job #1097260)

Utilizator Alexandra_MMihaila Alexandra Alexandra_M Data 3 februarie 2014 11:35:01
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define GMAX 10010
#define NMAX 5004

using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

void citire();
void pd();
void afisare();

int G,n,lc=2,lp=1;
int g[NMAX],p[NMAX];
int pmax[3][2*NMAX];
int maxim;


int main()
{
    citire();
    pd();
    afisare();
    return 0;
}
void pd()
{
    int i,j;
    for (i=1;i<=G;i++)
         if (g[1]<=i) pmax[1][i]=p[1];
    for (i=2;i<=n;i++)
         {for (j=1;j<=G;j++)
              {
               maxim=pmax[lp][j];
               if (g[i]<=j && maxim<p[i]+pmax[lp][j-g[i]])
                   maxim=p[i]+pmax[lp][j-g[i]];
               pmax[lc][j]=maxim;
              }
          lc=3-lc; lp=3-lp;
         }
}
void afisare()
{
    fout<<maxim<<'\n';
}
void citire()
{
    int i;
    fin>>n>>G;
    for (i=1;i<=n;i++)
         fin>>g[i]>>p[i];
}