#include <bits/stdc++.h> #include <unordered_set> using namespace std; const int N = int(5e5) + 99; int n, x, k; int a[N]; int b[N]; long long prefix[N]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; b[i] = a[i]; } sort(b, b+n); // for (int i = 0; i<n; i++) { // cout << b[i] << endl; // } int curr = n; long long sum = b[0]; prefix[0] = b[0]; for (int i = 1; i < n; i++) { prefix[i] = prefix[i-1] + b[i]; } for (int i = 1; i < n; i++) { if (b[i] == sum && b[i] == b[i-1]) { // dwie najmniejsze nie zjedzą się nawzajem continue; } else if (b[i] >= sum) { curr = i; } sum = prefix[i]; } int threshold = curr == n ? (b[n-1] + 1) : b[curr]; char c; for (int i = 0; i < n; i++) { if (a[i] >= threshold) { c = 'T'; } else { c = 'N'; } cout << c; } cout << endl; }
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 | #include <bits/stdc++.h> #include <unordered_set> using namespace std; const int N = int(5e5) + 99; int n, x, k; int a[N]; int b[N]; long long prefix[N]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; b[i] = a[i]; } sort(b, b+n); // for (int i = 0; i<n; i++) { // cout << b[i] << endl; // } int curr = n; long long sum = b[0]; prefix[0] = b[0]; for (int i = 1; i < n; i++) { prefix[i] = prefix[i-1] + b[i]; } for (int i = 1; i < n; i++) { if (b[i] == sum && b[i] == b[i-1]) { // dwie najmniejsze nie zjedzą się nawzajem continue; } else if (b[i] >= sum) { curr = i; } sum = prefix[i]; } int threshold = curr == n ? (b[n-1] + 1) : b[curr]; char c; for (int i = 0; i < n; i++) { if (a[i] >= threshold) { c = 'T'; } else { c = 'N'; } cout << c; } cout << endl; } |