#include <bits/stdc++.h> using namespace std; constexpr int maxN = 5e5+7; int n,t[maxN],oryginalna[maxN],ans=1e9+7; bool solve(int id) { long long x=t[id]; for(int i=1;i<=n;i++) { if(i != id) { if(x > t[i]) x += t[i]; else return false; } } return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; oryginalna[i] = t[i]; } sort(t+1, t+1+n); int l=1, r=n+1, m; while(l != r) { m = (l+r)/2; //cout<<m<<endl; if(solve(m)) { ans = t[m]; r = m; } else l = m+1; } for(int i=1;i<=n;i++) { if(oryginalna[i] < ans) cout<<'N'; else cout<<'T'; } } /* 6 2 7 1 8 2 8 3 5 4 4 */
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 | #include <bits/stdc++.h> using namespace std; constexpr int maxN = 5e5+7; int n,t[maxN],oryginalna[maxN],ans=1e9+7; bool solve(int id) { long long x=t[id]; for(int i=1;i<=n;i++) { if(i != id) { if(x > t[i]) x += t[i]; else return false; } } return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; oryginalna[i] = t[i]; } sort(t+1, t+1+n); int l=1, r=n+1, m; while(l != r) { m = (l+r)/2; //cout<<m<<endl; if(solve(m)) { ans = t[m]; r = m; } else l = m+1; } for(int i=1;i<=n;i++) { if(oryginalna[i] < ans) cout<<'N'; else cout<<'T'; } } /* 6 2 7 1 8 2 8 3 5 4 4 */ |