Cod sursa(job #2527571)

Utilizator S_DanSochirca Dan S_Dan Data 20 ianuarie 2020 17:29:39
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.51 kb
#include <bits/stdc++.h>
using namespace std;

int n, a[1010],suma=0;
int t1[100100],t2[100100];
int rs=INT_MIN;
bool b=0;

int main(){
	
	ifstream cin("jocul.in");
	ofstream cout("jocul.out");
	
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i],suma+=a[i];
	
	for(int i=1;i<=n;i++,b=!b){
		for(int j=1;j<=suma/2;j++)
			if(a[i]<=j){
				if(b) t1[j]=max(a[i]+t2[j-a[i]],t2[j]);
					else t2[j]=max(a[i]+t1[j-a[i]],t1[j]);
			}
		rs=max(t2[suma/2],t1[suma/2]);
	}
	
	cout<<rs<<' '<<suma-rs;
	
	return 0;
}