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
#include <algorithm>
#include <iostream>

constexpr int MAX_SUMOW = 500000;

std::pair<long long, int> sumy[MAX_SUMOW+2];
long long pref[MAX_SUMOW+1];
char wyniki[MAX_SUMOW+1];

int main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int liczba_sumow;
    std::cin >> liczba_sumow;

    int najmniejsze = 0x7FFFFFFF;

    for(int i = 0; i < liczba_sumow; ++i)
    {
        std::cin >> sumy[i].first, sumy[i].second = i;
        if(sumy[i].first < najmniejsze)
            najmniejsze = sumy[i].first;
    }
    sumy[liczba_sumow] = {-1, 0x7FFFFFFF};

    std::sort(sumy, sumy+liczba_sumow);
    
    pref[0] = 0;
    for(int i = 0; i < liczba_sumow; ++i)
        pref[i+1] = pref[i]+sumy[i].first;

    for(int i = 0; i < liczba_sumow; ++i)
        wyniki[i] = 'N';
    
    for(int i = liczba_sumow; i; --i)
        if((pref[i] > sumy[i].first || sumy[i-1].first == sumy[i].first) && sumy[i-1].first != najmniejsze)
            wyniki[sumy[i-1].second] = 'T';
        else break;
    wyniki[liczba_sumow] = '\0';

    std::cout << wyniki << '\n';

    return 0;
}