#include <iostream> #include <list> #include <bitset> #include <vector> #include <algorithm> using namespace std; bool desc(int a, int b) { return a > b; } typedef unsigned long long ull; #define MAX 1000000001 int main() { ios_base::sync_with_stdio(false); ull m, n, a; cin >> n; vector<ull> nums; vector<ull> sorted; vector<ull> on_right; while (n--) { cin >> a; nums.push_back(a); sorted.push_back(a); on_right.push_back(a); } sort(sorted.begin(), sorted.end(), desc); ull sum = 0; for (int i = (int) sorted.size() - 1; i >= 0; i--) { on_right[i] = sum; sum += sorted[i]; } m = sorted[sorted.size() - 1]; ull threshold = MAX; ull prev = 0; // cout << "min: " << m << endl; for (ull i = 0; i < sorted.size(); i++) { ull num = sorted[i]; // cout << "checking " << num << "; on right: " << on_right[i] << endl; if (num == m) { break; } if (num + on_right[i] <= prev) { break; } prev = num; threshold = num; } // cout << "threshold: " << threshold << endl; for (const auto &num: nums) { if (num >= threshold) { 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 63 64 65 66 67 68 69 70 71 72 73 | #include <iostream> #include <list> #include <bitset> #include <vector> #include <algorithm> using namespace std; bool desc(int a, int b) { return a > b; } typedef unsigned long long ull; #define MAX 1000000001 int main() { ios_base::sync_with_stdio(false); ull m, n, a; cin >> n; vector<ull> nums; vector<ull> sorted; vector<ull> on_right; while (n--) { cin >> a; nums.push_back(a); sorted.push_back(a); on_right.push_back(a); } sort(sorted.begin(), sorted.end(), desc); ull sum = 0; for (int i = (int) sorted.size() - 1; i >= 0; i--) { on_right[i] = sum; sum += sorted[i]; } m = sorted[sorted.size() - 1]; ull threshold = MAX; ull prev = 0; // cout << "min: " << m << endl; for (ull i = 0; i < sorted.size(); i++) { ull num = sorted[i]; // cout << "checking " << num << "; on right: " << on_right[i] << endl; if (num == m) { break; } if (num + on_right[i] <= prev) { break; } prev = num; threshold = num; } // cout << "threshold: " << threshold << endl; for (const auto &num: nums) { if (num >= threshold) { cout << "T"; } else { cout << "N"; } } return 0; } |