Cod sursa(job #2174582)

Utilizator victorobamavictor olaru victorobama Data 16 martie 2018 12:38:49
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;

ifstream f("rucsac.in");
ofstream g("rucsac.out");

int i,n,gmax,ultim,j,ii,maxi;
int sortat,pr[5005],gr[5005];
int pret[2800000];

int main()
{
    f>>n>>gmax;
    for(i=1;i<=n;i++)
    {
        f>>gr[i]>>pr[i];
    }
  while(!sortat)
  {
      sortat=1;
      for(i=1;i<n;i++)
      if(gr[i]>gr[i+1]){swap(gr[i],gr[i+1]);swap(pr[i],pr[i+1]);sortat=0;}
      else if(gr[i]==gr[i+1] && pr[i]>pr[i+1]){swap (pr[i],pr[i+1]);sortat=0;}

  }
  pret[gr[1]]=pr[1];
  ultim=gr[1];
  for(i=2;i<=n;i++)
  {
      for(j=ultim;j>=1;j--)

      if(pret[j]) pret[j+gr[i]] = max(pret[j+gr[i]],pret[j]+pr[i]);
      pret[gr[i]]= max(pret[gr[i]],pr[i]);
      ultim=ultim+gr[i];

  }


 for(i=1;i<=gmax;i++)
    if(pret[i]>maxi)maxi=pret[i];
 g<<maxi<<'\n';
    return 0;
}