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
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;

vector<int> masy;
vector<int> ms;
int n;

long long int bisect(int a, int b) {
    if(a+1==b) return -1;

    int k = (a+b+1)/2, ii;
    // printf("%d %d -> k=%d, res: ", a, b, k);

    long long int suma=ms[k], s2;
    for(ii=0; ii<n; ++ii)
        if(ii!=k) {
            if(suma>ms[ii]) suma+=(long long int)ms[ii]; 
            else break;
        }
    // printf("%d\n", (ii==n ? 1 : -1));
    if(ii==n) {
        s2 = bisect(a, k);
        // printf("%d %d: %lld\n", a, b, s2);
        if(s2==-1) return ms[k];
        else return s2;
    }
    s2 = bisect(k, b);
    // printf("%d %d: %lld\n", a, b, s2);
   
    return s2; 
}

int main()
{
    scanf("%d", &n);
    masy.resize(n);
    for(int ii=0; ii<n; ++ii) scanf("%d", &masy[ii]); 
    ms = masy;
    sort(ms.begin(), ms.end());
    long long int s2 = bisect(-1, n);
    // printf("%d %d: %lld\n", -1, n, s2);

    for(int ii=0; ii<n; ++ii) if(s2!=-1 && masy[ii]>=s2) printf("T"); else printf("N"); 
    printf("\n");

    return 0;
}