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

using namespace std;

struct Sum{
    long long waga;
    int id;
    bool operator<(const Sum& Prawy) const{
        if(waga<Prawy.waga) return 1;
        if(Prawy.waga<waga) return 0;
        return id>Prawy.id;
    }
};

int n;
Sum sumy[500000];
bool wyniki[500000];
int main()
{
    scanf("%d", &n);
    long long zmpom;
    for(int i=0; i<n; i++){
        scanf("%lld", &zmpom);
        sumy[i].id=i;
        sumy[i].waga=zmpom;
    }
    sort(sumy, sumy+n);
    zmpom=-1;
    long long suma=0;
    for(int i=0; i<n-1; i++){
        suma+=sumy[i].waga;
        if(suma<=sumy[i+1].waga)
            zmpom = sumy[i].waga;
    }
    for(int i=0; i<n; i++)
        wyniki[sumy[i].id]=(sumy[i].waga>zmpom);
    for(int i=0; i<n; i++)
        if(wyniki[i]) printf("T"); else printf("N");
    return 0;
}