#include<bits/stdc++.h> using namespace std; typedef long double ld; typedef long long ll; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() const int LIM=5e5+7; ll T[LIM], S[LIM]; map<ll,ll>mp; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; rep(i, n) { cin >> T[i]; S[i]=T[i]; } sort(S, S+n); vector<pair<ll,ll>>V; int l=0; while(l<n) { int p=l; while(S[p]==S[l]) ++p; V.pb({S[l], p-l}); l=p; } ll sum=V[0].st*V[0].nd, lst=1; for(int i=1; i<V.size(); ++i) { if(sum<=V[i].st) lst=i; sum+=V[i].st*V[i].nd; } for(int i=lst; i<V.size(); ++i) { mp[V[i].st]=1; } rep(i, n) cout << (mp[T[i]]?"T":"N"); cout << '\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 | #include<bits/stdc++.h> using namespace std; typedef long double ld; typedef long long ll; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() const int LIM=5e5+7; ll T[LIM], S[LIM]; map<ll,ll>mp; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; rep(i, n) { cin >> T[i]; S[i]=T[i]; } sort(S, S+n); vector<pair<ll,ll>>V; int l=0; while(l<n) { int p=l; while(S[p]==S[l]) ++p; V.pb({S[l], p-l}); l=p; } ll sum=V[0].st*V[0].nd, lst=1; for(int i=1; i<V.size(); ++i) { if(sum<=V[i].st) lst=i; sum+=V[i].st*V[i].nd; } for(int i=lst; i<V.size(); ++i) { mp[V[i].st]=1; } rep(i, n) cout << (mp[T[i]]?"T":"N"); cout << '\n'; } |