Cod sursa(job #1274085)

Utilizator bujorcatalin14Bujor Catalin bujorcatalin14 Data 23 noiembrie 2014 11:57:15
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int G,n;
int p[5000],g[5000]; // in g retinem greutatile , in p profitul
int uz[5000][5000];
int d[5000];

void Citire()
{
    int i;
    fin>>n>>G;
    for(i=1;i<=n;i++)
     fin>>g[i]>>p[i];
}

void Rezolvare()
{

    int i,s,k;
    for(s=1;s<=G;s++) d[s]=-1;
    for(s=1;s<=G;s++)
     for(i=1;i<=n;i++)
      if(g[i]<=s && d[s-g[i]]!=-1 && !uz[s-g[i]][i])
       if(d[s]<p[i]+d[s-g[i]])
       {
           d[s]=p[i]+d[s-g[i]];
           for(k=1;k<=n;k++)
            uz[s][k]=uz[s-g[i]][k];
            uz[s][i]=1;
       }
       fout<<d[G];
}


int main()
{

     Citire();
     Rezolvare();

      return 0;
}