Cod sursa(job #723718)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 25 martie 2012 19:43:15
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int G,g[5012],p[5012],P;
int a[2][5012];
int main(void)
{
	int n;
	fstream f,go;
	f.open("rucsac.in",ios::in);
	go.open("rucsac.out",ios::out);
	f>>n>>G;
	int i;
	for (i=1;i<=n;i++)
		f>>g[i]>>p[i];
	
	int gr;
	for (i=1;i<=n;i++)
	{
		if (i%2==1)
			for (gr=1;gr<=G;gr++)
				{
					a[1][gr]=a[0][gr];
					if(g[i]<=gr)
						a[1][gr]=max(a[1][gr],a[0][gr-g[i]]+p[i]);
				}
		else
			for (gr=1;gr<=G;gr++)
			{
				a[0][gr]=a[1][gr];
				if(g[i]<=gr)
					a[0][gr]=max(a[0][gr],a[1][gr-g[i]]+p[i]);
			}
	}
	go<<a[n%2][G];
}