#include<iostream> #include<vector> #include<algorithm> using namespace std; struct s1{ long long g; long long nr; }; bool c1(s1 a, s1 b){ return a.g<b.g; } bool c2(s1 a, s1 b){ return a.nr<b.nr; } int main(){ long long n; cin >> n; vector<s1>w(n); for (long long i=0;i<n;i++){ cin >> w[i].g; w[i].nr=i; } sort(w.begin(),w.end(),c1); /*for (long long i=0;i<n;i++){ cout<<w[i].g<<" "; } cout << endl;*/ long long l=0,p=n; long long m; bool czy; while(l<p){ m=(l+p)/2; //cout << m <<":m "; long long s=w[m].g; czy=true; for (long long i=0;i<n;i++){ if(m!=i){ if(s>w[i].g){ s+=w[i].g; } else{ czy=false; } } } //cout << "czy:"<<czy<<endl;; if(czy==false){ l=m+1; } else{ p=m; } } //cout << w[m].g << endl; long long gra=w[m].g; /*if(m==n-1 && czy==false){ gra++; }*/ if(czy==false){ gra++; } sort(w.begin(),w.end(),c2); for (long long i=0;i<n;i++){ if(w[i].g>=gra){ 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 69 70 71 72 | #include<iostream> #include<vector> #include<algorithm> using namespace std; struct s1{ long long g; long long nr; }; bool c1(s1 a, s1 b){ return a.g<b.g; } bool c2(s1 a, s1 b){ return a.nr<b.nr; } int main(){ long long n; cin >> n; vector<s1>w(n); for (long long i=0;i<n;i++){ cin >> w[i].g; w[i].nr=i; } sort(w.begin(),w.end(),c1); /*for (long long i=0;i<n;i++){ cout<<w[i].g<<" "; } cout << endl;*/ long long l=0,p=n; long long m; bool czy; while(l<p){ m=(l+p)/2; //cout << m <<":m "; long long s=w[m].g; czy=true; for (long long i=0;i<n;i++){ if(m!=i){ if(s>w[i].g){ s+=w[i].g; } else{ czy=false; } } } //cout << "czy:"<<czy<<endl;; if(czy==false){ l=m+1; } else{ p=m; } } //cout << w[m].g << endl; long long gra=w[m].g; /*if(m==n-1 && czy==false){ gra++; }*/ if(czy==false){ gra++; } sort(w.begin(),w.end(),c2); for (long long i=0;i<n;i++){ if(w[i].g>=gra){ cout << "T"; } else{ cout << "N"; } } cout << endl; } |