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