#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; } |