#include<bits/stdc++.h> using namespace std; pair<int, int>tab[500010]; bool czy[500010]; int main() { int n, i; long long s=0; scanf("%d", &n); for(i=0;i<n;i++) { scanf("%d", &tab[i].first); tab[i].second=i; s+=tab[i].first; } sort(tab, tab+n); if(tab[0].first==tab[n-1].first) { for(i=0;i<n;i++) printf("N"); return 0; } czy[tab[n-1].second]=1; s-=tab[n-1].first; for(i=n-2;i>=0;i--) { if(tab[i].first==tab[0].first) { s=tab[i].first; } if(s>tab[i+1].first) { s-=tab[i].first; czy[tab[i].second]=1; } else break; } for(i=0;i<n;i++) { if(czy[i]==1) printf("T"); else printf("N"); } }
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 | #include<bits/stdc++.h> using namespace std; pair<int, int>tab[500010]; bool czy[500010]; int main() { int n, i; long long s=0; scanf("%d", &n); for(i=0;i<n;i++) { scanf("%d", &tab[i].first); tab[i].second=i; s+=tab[i].first; } sort(tab, tab+n); if(tab[0].first==tab[n-1].first) { for(i=0;i<n;i++) printf("N"); return 0; } czy[tab[n-1].second]=1; s-=tab[n-1].first; for(i=n-2;i>=0;i--) { if(tab[i].first==tab[0].first) { s=tab[i].first; } if(s>tab[i+1].first) { s-=tab[i].first; czy[tab[i].second]=1; } else break; } for(i=0;i<n;i++) { if(czy[i]==1) printf("T"); else printf("N"); } } |