#include <iostream> #include<vector> #include<algorithm> using namespace std; struct abc{ long long x,id; char c='N'; }; bool kryt(abc a, abc b){ if(a.id<b.id) return true; return false; } bool kryt1(abc a, abc b){ if(a.x<b.x) return true; return false; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n;cin>>n; vector<abc>tab(n); for(int i = 0;i<n;++i){ cin>>tab[i].x; tab[i].id=i; } sort(tab.begin(),tab.end(),kryt1); vector<abc>pre=tab; for(int i = 1;i<n;++i){ pre[i].x+=pre[i-1].x; } if(tab[n-1].x!=tab[0].x)pre[n-1].c='T'; for(int i = n-2;i>=0;--i){ if(pre[i].x>tab[i+1].x && tab[i].x!=tab[0].x){ pre[i].c='T'; } else break; } sort(pre.begin(),pre.end(),kryt); for(int i = 0;i<n;++i){ cout<<pre[i].c; } 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 | #include <iostream> #include<vector> #include<algorithm> using namespace std; struct abc{ long long x,id; char c='N'; }; bool kryt(abc a, abc b){ if(a.id<b.id) return true; return false; } bool kryt1(abc a, abc b){ if(a.x<b.x) return true; return false; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n;cin>>n; vector<abc>tab(n); for(int i = 0;i<n;++i){ cin>>tab[i].x; tab[i].id=i; } sort(tab.begin(),tab.end(),kryt1); vector<abc>pre=tab; for(int i = 1;i<n;++i){ pre[i].x+=pre[i-1].x; } if(tab[n-1].x!=tab[0].x)pre[n-1].c='T'; for(int i = n-2;i>=0;--i){ if(pre[i].x>tab[i+1].x && tab[i].x!=tab[0].x){ pre[i].c='T'; } else break; } sort(pre.begin(),pre.end(),kryt); for(int i = 0;i<n;++i){ cout<<pre[i].c; } return 0; } |