#include <bits/stdc++.h> #define ll long long using namespace std; ll tab[1000100],tosor[1000100],sum[1000100]; bool git[1000100]; set<ll> sett; int main() { ios::sync_with_stdio(0); int n; cin>>n; for(int i = 0 ;i < n ;i ++) { cin>>tab[i]; tosor[i]=tab[i]; } sort(tosor,tosor+n); sum[0]=tosor[0]; for(int i = 1; i< n ;i ++) sum[i]=sum[i-1]+tosor[i]; int i = n-2; int j = 1; while(tosor[j]==tosor[0])j++; if(j!=n)git[n-1]=1; while(git[i+1]==1&&i>=0) { sett.insert(tosor[i+1]); if(sum[i]>tosor[i+1]&&i>=j)git[i]=1; i--; } for(int i = 0 ;i < n ; i++) { if(sett.count(tab[i]))cout<<'T'; else 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 | #include <bits/stdc++.h> #define ll long long using namespace std; ll tab[1000100],tosor[1000100],sum[1000100]; bool git[1000100]; set<ll> sett; int main() { ios::sync_with_stdio(0); int n; cin>>n; for(int i = 0 ;i < n ;i ++) { cin>>tab[i]; tosor[i]=tab[i]; } sort(tosor,tosor+n); sum[0]=tosor[0]; for(int i = 1; i< n ;i ++) sum[i]=sum[i-1]+tosor[i]; int i = n-2; int j = 1; while(tosor[j]==tosor[0])j++; if(j!=n)git[n-1]=1; while(git[i+1]==1&&i>=0) { sett.insert(tosor[i+1]); if(sum[i]>tosor[i+1]&&i>=j)git[i]=1; i--; } for(int i = 0 ;i < n ; i++) { if(sett.count(tab[i]))cout<<'T'; else cout<<'N'; } } |