#include<bits/stdc++.h> using namespace std; bool able(long long s,vector<long long> &vec,long long sum) { long long curr = vec[s]; //bool it_self = false; for(int k=0;k<vec.size();k++) { if(vec[k] < curr && k != s) curr += vec[k]; } //cout << curr << " " << sum <<endl; if(curr == sum) return true; return false; } long long bin_ser(long long l,long long r,vector<long long> &vec,long long sum) { while(l!=r) { long long s = (l+r)/2; if(able(s,vec,sum)) { r = s; } else l = s+1; } return l; } int main() { ios_base::sync_with_stdio(0); int z = 1; //cin >> z; while(z--) { int n; cin >> n; vector<long long> vec(n); long long sum = 0; long long last = -1; bool able = false; for(int k=0;k<n;k++) { cin >> vec[k]; sum+=vec[k]; if(last == -1) last = vec[k]; else if(last !=vec[k]) able = true; } vector<long long> sorted = vec; sort(sorted.begin(),sorted.end()); long long mini = bin_ser(0,n-1,sorted,sum); //cout << mini <<endl; for(auto t:vec) { if(t >= sorted[mini] && able) cout << "T"; else cout << "N"; } cout <<endl; } }
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 | #include<bits/stdc++.h> using namespace std; bool able(long long s,vector<long long> &vec,long long sum) { long long curr = vec[s]; //bool it_self = false; for(int k=0;k<vec.size();k++) { if(vec[k] < curr && k != s) curr += vec[k]; } //cout << curr << " " << sum <<endl; if(curr == sum) return true; return false; } long long bin_ser(long long l,long long r,vector<long long> &vec,long long sum) { while(l!=r) { long long s = (l+r)/2; if(able(s,vec,sum)) { r = s; } else l = s+1; } return l; } int main() { ios_base::sync_with_stdio(0); int z = 1; //cin >> z; while(z--) { int n; cin >> n; vector<long long> vec(n); long long sum = 0; long long last = -1; bool able = false; for(int k=0;k<n;k++) { cin >> vec[k]; sum+=vec[k]; if(last == -1) last = vec[k]; else if(last !=vec[k]) able = true; } vector<long long> sorted = vec; sort(sorted.begin(),sorted.end()); long long mini = bin_ser(0,n-1,sorted,sum); //cout << mini <<endl; for(auto t:vec) { if(t >= sorted[mini] && able) cout << "T"; else cout << "N"; } cout <<endl; } } |