#include <bits/stdc++.h> using namespace std; struct sum{ long long war,ind; }; bool operator < (sum a,sum b){ if(a.war<b.war) return 1; return 0; } sum ts[500001]; long long ow[500001]; long long n,s,wn; int main() { scanf("%lld",&n); for(int i=0;i<n;i++){ scanf("%lld",&ts[i].war); ts[i].ind=i; ow[i]=ts[i].war; s+=ts[i].war; } sort(ts,ts+n); wn=-1; for(int i=n-1;i>0;i--){ //printf("%lld %lld\n",ts[i].war,s); s-=ts[i].war; if((ts[i].war!=ts[i+1].war)){ if(s+ts[i].war<=ts[i+1].war){ wn=ts[i].war; break; } } } if(wn==-1) wn=ts[0].war; if(ts[0].war==ts[n-1].war){ //printf("aaa"); wn=1000000009; } for(int i=0;i<n;i++){ if(ow[i]<=wn){ printf("N"); }else{ printf("T"); } } 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 51 52 53 | #include <bits/stdc++.h> using namespace std; struct sum{ long long war,ind; }; bool operator < (sum a,sum b){ if(a.war<b.war) return 1; return 0; } sum ts[500001]; long long ow[500001]; long long n,s,wn; int main() { scanf("%lld",&n); for(int i=0;i<n;i++){ scanf("%lld",&ts[i].war); ts[i].ind=i; ow[i]=ts[i].war; s+=ts[i].war; } sort(ts,ts+n); wn=-1; for(int i=n-1;i>0;i--){ //printf("%lld %lld\n",ts[i].war,s); s-=ts[i].war; if((ts[i].war!=ts[i+1].war)){ if(s+ts[i].war<=ts[i+1].war){ wn=ts[i].war; break; } } } if(wn==-1) wn=ts[0].war; if(ts[0].war==ts[n-1].war){ //printf("aaa"); wn=1000000009; } for(int i=0;i<n;i++){ if(ow[i]<=wn){ printf("N"); }else{ printf("T"); } } return 0; } |