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
#include<bits/stdc++.h>
using namespace std;

int n;

pair <int,int> tab[500004];

bool odp[500004];

bool krol(int ind)
{
    long long sum = tab[ind].first;
    for(int i = 0;i < ind; i++)
        if(tab[i].first < sum)
            sum += tab[i].first;
        else
            return 0;
    for(int i = ind + 1; i < n; i++)
    {
        int x = tab[i].first;
        if(sum > x)
            sum += x;
        else
            return 0;
    }
    return 1;
}

int main()
{
    cin>>n;
    for(int i = 0;i < n; i++)
    {
        cin>>tab[i].first;
        tab[i].second = i;
    }
    sort(tab,tab + n);
    tab[n].first = 2e9;
    int L = 0,P = n;
    while(L != P)
    {
        int S = (L + P) / 2;
        if(!krol(S)) L = S + 1;
        else P = S;
    }
    for(int i = L;i < n; i++)
        odp[tab[i].second] = true;
    for(int i = 0;i < n; i++)
        if(odp[i])
            cout<<'T';
        else
            cout<<'N';
    return 0;
}