#include <bits/stdc++.h> using namespace std; struct ryba{ int d; long long w; int p; bool t; }; bool comp(ryba a, ryba b){ return a.w < b.w; } bool ind(ryba a, ryba b){ return a.p < b.p; } ryba arr[500003]; long long pref[500003]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for(int i=0; i<n; i++){ cin >> arr[i].d; arr[i].w=arr[i].d; arr[i].p=i; arr[i].t=false; } sort(arr, arr+n, comp); pref[0]=arr[0].d; for(int i=1; i<n; i++){ pref[i]=pref[i-1]+arr[i].d; } for(int i=1; i<n; i++){ for(int j=i-1; j>=0; j--){ if(arr[j].d<arr[i].w){ arr[i].w+=pref[j]; break; } } for(int j=i+1; j<n; j++){ if(arr[i].w > arr[j].d){ arr[i].w+=arr[j].d; } } if(arr[i].w > arr[n-1].d){ arr[i].t=true; break; } } for(int i=1; i<n; i++){ if(arr[i-1].t){ arr[i].t=true; } } sort(arr, arr+n, ind); for(int i=0; i<n; i++){ if(arr[i].t){ cout << "T"; }else{ cout << "N"; } } 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 54 55 56 57 58 59 60 61 62 | #include <bits/stdc++.h> using namespace std; struct ryba{ int d; long long w; int p; bool t; }; bool comp(ryba a, ryba b){ return a.w < b.w; } bool ind(ryba a, ryba b){ return a.p < b.p; } ryba arr[500003]; long long pref[500003]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for(int i=0; i<n; i++){ cin >> arr[i].d; arr[i].w=arr[i].d; arr[i].p=i; arr[i].t=false; } sort(arr, arr+n, comp); pref[0]=arr[0].d; for(int i=1; i<n; i++){ pref[i]=pref[i-1]+arr[i].d; } for(int i=1; i<n; i++){ for(int j=i-1; j>=0; j--){ if(arr[j].d<arr[i].w){ arr[i].w+=pref[j]; break; } } for(int j=i+1; j<n; j++){ if(arr[i].w > arr[j].d){ arr[i].w+=arr[j].d; } } if(arr[i].w > arr[n-1].d){ arr[i].t=true; break; } } for(int i=1; i<n; i++){ if(arr[i-1].t){ arr[i].t=true; } } sort(arr, arr+n, ind); for(int i=0; i<n; i++){ if(arr[i].t){ cout << "T"; }else{ cout << "N"; } } return 0; } |