#include <iostream> #include <algorithm> #include <utility> using namespace std; const int MAX_N = 500000; const int MAX_SUM = 1000000000; int n; pair<int, int> sumy[MAX_N]; int value; long long maxzsum, sumofsum; bool cmpfi(pair<int, int> &a, pair<int, int> &b) { if (a.first < b.first)return true; return false; } bool cmpse(pair<int, int> &a, pair<int, int> &b) { if (a.second < b.second)return true; return false; } int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> value; sumy[i] = make_pair(i, value); } sort(sumy, sumy + n, cmpse); maxzsum = 0; sumofsum = sumy[0].second; for (int i = 1; i < n; i++) { if (sumy[i].second >= sumofsum)maxzsum = sumy[i - 1].second; sumofsum += sumy[i].second; if (MAX_SUM < sumofsum)break; } sort(sumy, sumy + n , cmpfi); for (int i = 0; i < n; i++) { if (maxzsum >= sumy[i].second)cout << "N"; else cout << "T"; } }
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 <iostream> #include <algorithm> #include <utility> using namespace std; const int MAX_N = 500000; const int MAX_SUM = 1000000000; int n; pair<int, int> sumy[MAX_N]; int value; long long maxzsum, sumofsum; bool cmpfi(pair<int, int> &a, pair<int, int> &b) { if (a.first < b.first)return true; return false; } bool cmpse(pair<int, int> &a, pair<int, int> &b) { if (a.second < b.second)return true; return false; } int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> value; sumy[i] = make_pair(i, value); } sort(sumy, sumy + n, cmpse); maxzsum = 0; sumofsum = sumy[0].second; for (int i = 1; i < n; i++) { if (sumy[i].second >= sumofsum)maxzsum = sumy[i - 1].second; sumofsum += sumy[i].second; if (MAX_SUM < sumofsum)break; } sort(sumy, sumy + n , cmpfi); for (int i = 0; i < n; i++) { if (maxzsum >= sumy[i].second)cout << "N"; else cout << "T"; } } |