#include <cstdio>
#include <cstdlib>
#include <cstdint>
#include <vector>
#include <map>
#include <algorithm>
#include <set>
#include <time.h>
#include <queue>
using namespace std;
int main () {
int n;
scanf("%d", &n);
vector<pair<int64_t, int> > sums;
for (int i = 0; i < n; ++i) {
int64_t w;
scanf("%lld", &w);
sums.push_back(make_pair(w, i));
}
sort(sums.begin(), sums.end());
vector<int64_t> psums;
int64_t psum = 0;
for (int i = 0; i < n; ++i) {
psum += sums[i].first;
psums.push_back(psum);
}
int i = 0;
while ((i < n) && (sums[i].first == sums[0].first)) {
psums[i] = 0;
++i;
}
vector<bool> ok(n, false);
if ((sums[n - 1].first != sums[0].first) || (n == 1)) {
ok[sums[n - 1].second] = true;
}
for (int i = n - 2; i >= 0; --i) {
if (psums[i] <= sums[i + 1].first) {
break;
}
ok[sums[i].second] = true;
}
for (int i = 0; i < n; ++i) {
printf(ok[i] ? "T" : "N");
}
printf("\n");
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 | #include <cstdio> #include <cstdlib> #include <cstdint> #include <vector> #include <map> #include <algorithm> #include <set> #include <time.h> #include <queue> using namespace std; int main () { int n; scanf("%d", &n); vector<pair<int64_t, int> > sums; for (int i = 0; i < n; ++i) { int64_t w; scanf("%lld", &w); sums.push_back(make_pair(w, i)); } sort(sums.begin(), sums.end()); vector<int64_t> psums; int64_t psum = 0; for (int i = 0; i < n; ++i) { psum += sums[i].first; psums.push_back(psum); } int i = 0; while ((i < n) && (sums[i].first == sums[0].first)) { psums[i] = 0; ++i; } vector<bool> ok(n, false); if ((sums[n - 1].first != sums[0].first) || (n == 1)) { ok[sums[n - 1].second] = true; } for (int i = n - 2; i >= 0; --i) { if (psums[i] <= sums[i + 1].first) { break; } ok[sums[i].second] = true; } for (int i = 0; i < n; ++i) { printf(ok[i] ? "T" : "N"); } printf("\n"); return 0; } |
English