Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8. Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
 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
#include <iostream>
#include <algorithm>

using namespace std;

pair<long long, int> tab[500007]; // <waga, pozycja>
long long sum[500007];
bool odp[500007];

int main() {
	ios_base::sync_with_stdio(0);
	
	int n;
	cin>>n;
	
	for (int i = 0; i < n; i++) {
		cin>>tab[i].first;
		tab[i].second = i;
	}
	sort(tab, tab + n);
	
	if (tab[0].first != tab[n - 1].first) { //  wpp wszystkie r�wne i �aden �adnego nie zje
		sum[0] = tab[0].first;
		//cout<<sum[0]<<" ";
		for (int i = 1; i < n; i++) {
			sum[i] = sum[i - 1] + tab[i].first;
			//cout<<sum[i]<<" ";
		}
		
		odp[tab[n - 1].second] = true; // najwi�kszy na pewno mo�e zje�� wszystkie
		//cout<<tab[n - 1].first<<" moze\n";
		int pocz = n - 2;
		while (tab[pocz].first != tab[0].first && sum[pocz] > tab[pocz + 1].first) {
			odp[tab[pocz].second] = true;
			//cout<<tab[pocz].first<<" moze\n";
			pocz--;
		}
	}
	for (int i = 0; i < n; i++) {
		cout<<(odp[i] ? 'T' : 'N');
	}
}