#include<bits/stdc++.h>
using namespace std;
const int MAXN=5e5+7;
int t[MAXN];
int t0[MAXN];
//long long maxsiz[5e5+7];
//long long suma[5e5+7];
int main(){
cin.tie(0);
ios_base::sync_with_stdio(0);
cout.tie(0);
int lsum;
cin>>lsum;
for(int i=0;i<lsum;i++){
cin>>t[i];
t0[i]=t[i];
}
sort(t,t+lsum);
int p=0,k=lsum;
while(k>p){
int sr=(k+p)/2;
long long maxm=t[sr];
bool mw=0;
for(int i=0;i<lsum;i++){
if(i==sr)
continue;
if(maxm>t[i])
maxm+=t[i];
else mw=1;
}
if(mw==0){
k=sr;
}
else{
p=sr+1;
}
}
if(t[0]==t[lsum-1]||p==lsum){
for(int i=0;i<lsum;i++){
cout<<"N";
}
return 0;
}
//cout<<t[p];
for(int i=0;i<lsum;i++){
if(t0[i]>=t[p]){
cout<<"T";
}
else cout<<"N";
}
/*int maxryb=-1;
int lin=0;
for(int i=1;i<=lsum;i++){
maxsiz[i]=suma[lin]+t[i];
suma[i]=suma[i-1]+t[i];
maxryb=max(maxryb,t[i]);
if(t[i-1]!=t[i])
lin=i-1;
}
lin=lsum+1;
int i=lsum;
while(i>0){
if(maxwyn[i]<=t[lin])
break;
}*/
}
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include<bits/stdc++.h> using namespace std; const int MAXN=5e5+7; int t[MAXN]; int t0[MAXN]; //long long maxsiz[5e5+7]; //long long suma[5e5+7]; int main(){ cin.tie(0); ios_base::sync_with_stdio(0); cout.tie(0); int lsum; cin>>lsum; for(int i=0;i<lsum;i++){ cin>>t[i]; t0[i]=t[i]; } sort(t,t+lsum); int p=0,k=lsum; while(k>p){ int sr=(k+p)/2; long long maxm=t[sr]; bool mw=0; for(int i=0;i<lsum;i++){ if(i==sr) continue; if(maxm>t[i]) maxm+=t[i]; else mw=1; } if(mw==0){ k=sr; } else{ p=sr+1; } } if(t[0]==t[lsum-1]||p==lsum){ for(int i=0;i<lsum;i++){ cout<<"N"; } return 0; } //cout<<t[p]; for(int i=0;i<lsum;i++){ if(t0[i]>=t[p]){ cout<<"T"; } else cout<<"N"; } /*int maxryb=-1; int lin=0; for(int i=1;i<=lsum;i++){ maxsiz[i]=suma[lin]+t[i]; suma[i]=suma[i-1]+t[i]; maxryb=max(maxryb,t[i]); if(t[i-1]!=t[i]) lin=i-1; } lin=lsum+1; int i=lsum; while(i>0){ if(maxwyn[i]<=t[lin]) break; }*/ } |
English