#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; } |
English