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

long long ile, ryba, aktual=0, aktualj, aktualposkram=0, krolwod=0; set<long long> nie;
struct krol
{
    long long dlug, kolej;
};
vector<krol> V;
bool hierar(krol a, krol b)
{
    if(a.dlug>b.dlug)
        return false;
    else return true;
}
int main()
{
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    cin >> ile;
    for(long long i=1; i<=ile; i++)
    {
        cin >> ryba; krol morza;
        morza.kolej=i; morza.dlug=ryba; V.push_back(morza); krolwod=max(krolwod, ryba);
    }
    sort(V.begin(), V.end(), hierar);
    if(V[0].dlug==krolwod)
    {
        for(long long i=0; i<ile; i++)
            printf("N");
        return 0;
    }
    aktual=V[0].dlug+1; aktualposkram+=V[0].dlug;
    for(long long i=1; i<ile; i++)
    {
        if(V[i].dlug!=V[i-1].dlug && aktualposkram<=V[i].dlug)
            aktual=V[i].dlug;
        aktualposkram+=V[i].dlug;
    }
    for(long long i=0; i<ile; i++)
    {
        if(aktual>V[i].dlug)
            nie.insert(V[i].kolej);
        else break;
    }
    for(long long i=1; i<=ile; i++)
    {
        if(nie.count(i))
            printf("N");
        else
            printf("T");
    }
}