Cod sursa(job #609229)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 20 august 2011 12:09:17
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream.h>
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n,G,w[5005],p[5005],d[2][10005],max;
inline int MAXIM(int a, int b)
{ return (a>b) ? a : b; }

int main()
{ int i,j;
  f>>n>>G;
  for(i=1;i<=n;++i) f>>w[i]>>p[i];
  d[0][w[1]]=p[1];
  for(i=2;i<=n;++i)
	  { for(j=1;j<w[i];++j) d[1][j]=d[0][j];
	    for(;j<=G;++j) if(d[0][j] > d[0][j-w[i]]+p[i]) d[1][j]=d[0][j];
							else if(d[0][j-w[i]]>0) d[1][j]=d[0][j-w[i]] + p[i];
									else if(j!=w[i]) d[1][j]=d[0][j];
											else d[1][j]=p[i];
		for(j=1;j<=G;++j) d[0][j]=d[1][j], max=MAXIM(max,d[0][j])/*, g<<d[0][j]<<' '*/;
							//g<<'\n';
	  }
  g<<max<<'\n';
  f.close(); g.close();
  return 0;
}