Cod sursa(job #2538200)

Utilizator ivddabDabelea Ioana-Viviana ivddab Data 4 februarie 2020 15:25:47
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <algorithm>
#define NM 5008
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n,G,i,j;
int gr[NM],sm[NM],p[NM];
bool cmp( int i,int j){
   if(gr[i]!=gr[j]) return gr[i]<gr[j];
   return sm[i]<sm[j];
}
struct vect{
  int sum[10007];
};
vect a,b;
int main()
{
    f>>n>>G;
    for(i=1;i<=n;i++){
        f>>gr[i]>>sm[i];
        p[i]=i;
    }

    sort(p+1,p+n+1,cmp);

    for(i=1;i<=n;i++){
        for(j=1;j<=G;j++)
          if(j<gr[p[i]]) b.sum[j]=a.sum[j];
            else b.sum[j]=max(a.sum[j],a.sum[j-gr[p[i]]]+sm[p[i]]);
        a=b;
    }
    g<<a.sum[G];
    return 0;
}