#include <bits/stdc++.h> using namespace std; pair<long long,long long> tab[500005]; long long tab2[500005]; char s[500005]; long long n, maxi=0; long long bs(long long pocz, long long kon){ while(pocz<=kon){ long long sr=(pocz+kon)/2; long long liczba=tab[sr].first; //cout<<"pocz: "<<pocz<<" kon: "<<kon<<" sr: "<<sr<<" liczba: "<<liczba<<" "; for(int i=0;i<n;i++){ if(sr==i){ continue; } if(tab[i].first<liczba){ liczba+=tab[i].first; } else{ break; } } //cout<<liczba<<" "; if(liczba>maxi){ //cout<<"t"<<'\n'; kon=sr-1; } else{ //cout<<"n"<<'\n'; pocz=sr+1; } } return kon; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n; for(int i=0;i<n;i++){ s[i]='a'; } for(int i=0;i<n;i++){ cin>>tab[i].first; maxi=max(maxi,tab[i].first); tab[i].second=i; tab2[i]=tab[i].first; } sort(tab,tab+n); long long x=bs(0,n-1); long long y=tab[x].first; for(int i=0;i<n;i++){ if(tab2[i]>y){ cout<<"T"; } else{ cout<<"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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <bits/stdc++.h> using namespace std; pair<long long,long long> tab[500005]; long long tab2[500005]; char s[500005]; long long n, maxi=0; long long bs(long long pocz, long long kon){ while(pocz<=kon){ long long sr=(pocz+kon)/2; long long liczba=tab[sr].first; //cout<<"pocz: "<<pocz<<" kon: "<<kon<<" sr: "<<sr<<" liczba: "<<liczba<<" "; for(int i=0;i<n;i++){ if(sr==i){ continue; } if(tab[i].first<liczba){ liczba+=tab[i].first; } else{ break; } } //cout<<liczba<<" "; if(liczba>maxi){ //cout<<"t"<<'\n'; kon=sr-1; } else{ //cout<<"n"<<'\n'; pocz=sr+1; } } return kon; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n; for(int i=0;i<n;i++){ s[i]='a'; } for(int i=0;i<n;i++){ cin>>tab[i].first; maxi=max(maxi,tab[i].first); tab[i].second=i; tab2[i]=tab[i].first; } sort(tab,tab+n); long long x=bs(0,n-1); long long y=tab[x].first; for(int i=0;i<n;i++){ if(tab2[i]>y){ cout<<"T"; } else{ cout<<"N"; } } return 0; } |