#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n; cin>>n;
vector<pair<ll,int>> nums(n);
int it{0};
for(auto &i : nums){
cin>>i.first;
i.second = it++;
}
sort(nums.begin(),nums.end());
vector<ll> pref(n+1);
vector<bool> ok(n);
for(int i=1;i<=n;++i){
pref[i] = pref[i-1] + nums[i-1].first;
}
ll smallest{nums[0].first};
for(int i=1;i<=n && smallest==nums[i-1].first;++i){
pref[i]=smallest;
}
it=n-2;
while(nums[it].first!=smallest){
if(nums[it].first == nums[it+1].first){
pref[it+1]=pref[it+2];
}
it--;
}
bool f{false};
if(nums[n-1].first!=smallest) ok[nums[n-1].second]=true;
else f = true;
for(int i=n-1;i>0;--i){
if(f) continue;
if(pref[i]>nums[i].first){
ok[nums[i-1].second]=true;
}
else f=true;
}
for(auto i : ok){
cout<< (i ? 'T' : 'N');
}
return 0;
}
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin>>n; vector<pair<ll,int>> nums(n); int it{0}; for(auto &i : nums){ cin>>i.first; i.second = it++; } sort(nums.begin(),nums.end()); vector<ll> pref(n+1); vector<bool> ok(n); for(int i=1;i<=n;++i){ pref[i] = pref[i-1] + nums[i-1].first; } ll smallest{nums[0].first}; for(int i=1;i<=n && smallest==nums[i-1].first;++i){ pref[i]=smallest; } it=n-2; while(nums[it].first!=smallest){ if(nums[it].first == nums[it+1].first){ pref[it+1]=pref[it+2]; } it--; } bool f{false}; if(nums[n-1].first!=smallest) ok[nums[n-1].second]=true; else f = true; for(int i=n-1;i>0;--i){ if(f) continue; if(pref[i]>nums[i].first){ ok[nums[i-1].second]=true; } else f=true; } for(auto i : ok){ cout<< (i ? 'T' : 'N'); } return 0; } |
English