#include <bits/stdc++.h> #define ll long long using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll N, a; vector <ll> v; vector <ll> org; cin >> N; for (int i = 0; i < N; i++) { cin >> a; v.push_back(a); org.push_back(a); } sort(v.begin(), v.end()); int p = 0, k = N - 1, mid; ll ans = LLONG_MAX; while (p <= k) { mid = (p + k)/2; ll masa = v[mid]; a = masa; v[mid] = 0; int iter = 0; while (iter < N && masa > v[iter]) { masa += v[iter]; iter++; } v[mid] = a; if(iter == N) { ans = v[mid]; k = mid - 1; } else p = mid + 1; } for(int i = 0; i < N; i++) { cout << (org[i] >= ans ? 'T' : 'N'); } cout << "\n"; }
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 | #include <bits/stdc++.h> #define ll long long using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll N, a; vector <ll> v; vector <ll> org; cin >> N; for (int i = 0; i < N; i++) { cin >> a; v.push_back(a); org.push_back(a); } sort(v.begin(), v.end()); int p = 0, k = N - 1, mid; ll ans = LLONG_MAX; while (p <= k) { mid = (p + k)/2; ll masa = v[mid]; a = masa; v[mid] = 0; int iter = 0; while (iter < N && masa > v[iter]) { masa += v[iter]; iter++; } v[mid] = a; if(iter == N) { ans = v[mid]; k = mid - 1; } else p = mid + 1; } for(int i = 0; i < N; i++) { cout << (org[i] >= ans ? 'T' : 'N'); } cout << "\n"; } |