1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <cmath>
using namespace std;
int nominaly[1001]={0};
int x[1001]={0};
int pierwsze[1001]={0};
int drugie[1001]={0};
int odrzucone[1001]={0};
int main(int argc, char** argv) {
	int n=0;
	int a=0;
	int roznica=0;
	long int suma=0;
	long int suma1=0;
	long int suma2=0;
	cin >> n;
	for(int b=n; b>0; b--)
	{
		cin >> a;
		nominaly[a]++;
		x[a]++;
		suma=suma+a;
	}
			for(int z=1001; z>=1; z--)
			if(x[z]>0) {if(suma1<suma2 || suma1==suma2) 
			{pierwsze[z]++;
			suma1=suma1+z;}
					else {drugie[z]++;
						  suma2=suma2+z;}
					x[z]--;
					z++;}
//			cout << suma1 << " " << suma2 << endl;
			if(suma1==suma2) cout << suma;
			else{
				
				for(int i=n; i>0; i--){
//				cout << suma1 << " " << suma2 << endl;
					roznica=abs(suma1-suma2);	
					if(suma1==suma2 && suma1!=0) {cout << suma1+suma2 << endl; break;}
				
					else if(suma1>suma2) { 
						for(int k=1; k<=1001; k++) if(odrzucone[k]>0)if(k==roznica) {cout << suma1+suma2+roznica; return 0;}
						for(int j=1; j<=1001; j++) if(pierwsze[j]>0)
						{suma1=suma1-j;
						pierwsze[j]--;
						odrzucone[j]++;
						i++;
						break;
						}
						}
				
					else{
						for(int g=1; g<=1001; g++) {
						if(odrzucone[g]>0)
						if(g==roznica)
						{cout << suma1+suma2+roznica;  return 0;}}
						for(int h=1; h<=1001; h++) 
						if(drugie[h]>0)
						{suma2=suma2-h;
						drugie[h]--;
						odrzucone[h]++;
						i++;
						break;
						} }
					
					if(i==1) cout << "NIESTETY";
				}	
			}
	return 0;
}