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