#include<bits/stdc++.h> using namespace std; vector<long long> sumy; vector<long long> sum; bool spr(int a) { if(a<0||a>=sumy.size()) return 0; bool p=0; long long pom=sumy[a]; for(int i=0; i<sumy.size()-1; ++i){ if(sumy[i]==sumy[a]&&p==0){ p=true; continue; } if(sumy[i]>=pom) return 0; if(sumy[i]<pom) pom+=sumy[i]; } return 1; } long long bs() { int p=0, k=sumy.size()-1, s; while(k-p>0){ s=(p+k)/2; if(spr(s)==0&&spr(s+1)==1){ ++s; break; } if(spr(s)==1&&spr(s-1)==0){ break; } if(spr(s)==1) k=s; if(spr(s)==0) p=s; } return sumy[s]; } int main() { int n; scanf("%d", &n); for(int i=0; i<n; ++i){ long long a; scanf("%lld", &a); sumy.push_back(a); sum.push_back(a); } sumy.push_back(1000000009); sort(sumy.begin(), sumy.end()); long long pom=bs(); for(int i=0; i<sum.size(); ++i){ if(sum[i]>=pom) printf("T"); else 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 50 51 52 53 54 55 | #include<bits/stdc++.h> using namespace std; vector<long long> sumy; vector<long long> sum; bool spr(int a) { if(a<0||a>=sumy.size()) return 0; bool p=0; long long pom=sumy[a]; for(int i=0; i<sumy.size()-1; ++i){ if(sumy[i]==sumy[a]&&p==0){ p=true; continue; } if(sumy[i]>=pom) return 0; if(sumy[i]<pom) pom+=sumy[i]; } return 1; } long long bs() { int p=0, k=sumy.size()-1, s; while(k-p>0){ s=(p+k)/2; if(spr(s)==0&&spr(s+1)==1){ ++s; break; } if(spr(s)==1&&spr(s-1)==0){ break; } if(spr(s)==1) k=s; if(spr(s)==0) p=s; } return sumy[s]; } int main() { int n; scanf("%d", &n); for(int i=0; i<n; ++i){ long long a; scanf("%lld", &a); sumy.push_back(a); sum.push_back(a); } sumy.push_back(1000000009); sort(sumy.begin(), sumy.end()); long long pom=bs(); for(int i=0; i<sum.size(); ++i){ if(sum[i]>=pom) printf("T"); else printf("N"); } return 0; } |