#include <iostream> #include <vector> #include <algorithm> #include <string> #define MAX 1000009 int result[MAX]; int main() { int n; std::vector<std::pair<long long, int>> fish; std::cin >> n; for (int i=0; i<n; i++) { int v; std::cin >> v; fish.push_back(std::make_pair(v, i)); } std::sort(fish.begin(), fish.end()); long long sum = 0, li = 1; for (int i=0; i<n; i++) { if (fish[i].first == fish[0].first) { sum += fish[i].first; li = i + 1; continue; } while (li < n && (li <= i || fish[li].first < sum)) { sum += fish[li++].first; } if (li == n) { result[fish[i].second] = true; } } for (int i=0; i<n; i++) if (result[i]) std::cout << "T"; else std::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 | #include <iostream> #include <vector> #include <algorithm> #include <string> #define MAX 1000009 int result[MAX]; int main() { int n; std::vector<std::pair<long long, int>> fish; std::cin >> n; for (int i=0; i<n; i++) { int v; std::cin >> v; fish.push_back(std::make_pair(v, i)); } std::sort(fish.begin(), fish.end()); long long sum = 0, li = 1; for (int i=0; i<n; i++) { if (fish[i].first == fish[0].first) { sum += fish[i].first; li = i + 1; continue; } while (li < n && (li <= i || fish[li].first < sum)) { sum += fish[li++].first; } if (li == n) { result[fish[i].second] = true; } } for (int i=0; i<n; i++) if (result[i]) std::cout << "T"; else std::cout << "N"; } |