#include <iostream> #include <algorithm> #include <vector> #include <fstream> using namespace std; void printf(vector< int> arr) { for (int i = 0; i < arr.size(); i++) { cout << arr[i] << " "; } cout << endl; return; } bool king_of_ocean(vector<int> arr, int start) { long long int sum = arr[start]; for (int i = 0; i < start; i++) if (arr[i] == sum) return false; else sum += arr[i]; for (int j = start + 1; j < arr.size(); j++) if (sum <= arr[j]) return false; else sum += arr[j]; return true; } int binary_search(vector<int>arr) { int p = 0; int q = arr.size(); while (p < q) { int mid = p + (q - p) / 2; if (!king_of_ocean(arr, mid)) p = mid + 1; else q = mid; } return p; } bool check(int a, int b) { return a > b; } string solve() { int n; cin >> n; vector<int> arr(n); vector<int>original_arr(n); for (int i = 0; i < n; i++)cin >> arr[i]; for (int i = 0; i < n; i++)original_arr[i] = arr[i]; sort(arr.begin(), arr.end()); int min_val = arr[binary_search(arr)]; string ans; for (int i = 0; i < n; i++) if (min_val > original_arr[i]) ans += 'N'; else ans += 'T'; return ans; } int main() { cout << solve() << endl; 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 | #include <iostream> #include <algorithm> #include <vector> #include <fstream> using namespace std; void printf(vector< int> arr) { for (int i = 0; i < arr.size(); i++) { cout << arr[i] << " "; } cout << endl; return; } bool king_of_ocean(vector<int> arr, int start) { long long int sum = arr[start]; for (int i = 0; i < start; i++) if (arr[i] == sum) return false; else sum += arr[i]; for (int j = start + 1; j < arr.size(); j++) if (sum <= arr[j]) return false; else sum += arr[j]; return true; } int binary_search(vector<int>arr) { int p = 0; int q = arr.size(); while (p < q) { int mid = p + (q - p) / 2; if (!king_of_ocean(arr, mid)) p = mid + 1; else q = mid; } return p; } bool check(int a, int b) { return a > b; } string solve() { int n; cin >> n; vector<int> arr(n); vector<int>original_arr(n); for (int i = 0; i < n; i++)cin >> arr[i]; for (int i = 0; i < n; i++)original_arr[i] = arr[i]; sort(arr.begin(), arr.end()); int min_val = arr[binary_search(arr)]; string ans; for (int i = 0; i < n; i++) if (min_val > original_arr[i]) ans += 'N'; else ans += 'T'; return ans; } int main() { cout << solve() << endl; return 0; } |