#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
using namespace std;
int main ()
{
ios_base::sync_with_stdio(0);
int ileR, waga, max, min, suma, nr, juz, tawaga, pocz;
vector <pair <int,int>> wagi;
vector <pair <int,int>> wzor;
vector <string> krol;
max=0;
min=0;
juz=0;
tawaga=0;
pocz=0;
cin >> ileR;
for (int n=1; n<=ileR; n++)
krol.push_back("N");
for (int n=1; n<=ileR; n++)
{
cin >> waga;
wagi.push_back(make_pair(waga,n-1));
wzor.push_back(make_pair(waga,n-1));
}
sort (wagi.begin(), wagi.end());
sort (wzor.begin(), wzor.end());
min=wagi[0].first;
max=wagi[ileR-1].first;
// cout << min << " " << max << endl;;
// for (int n=0; n<ileR; n++)
// {
// cout << wagi[n].first << " " << wagi[n].second << " " << krol[n] << endl;
// }
if ((ileR == 2) and (wagi[1].first > wagi[0].first))
krol[wagi[1].second]="T";
else
{
suma=wagi[0].first;
if (wagi[0].first != wagi[1].first)
{
suma=suma+wagi[1].first;
wagi[1].first=suma;
if ((suma >= max) and (juz == 0))
{
nr = 0;
juz = 1;
}
}
else
pocz=1;
for (int n=2; n<ileR; n++)
// for (int n=1; n<ileR; n++)
{
//cout << n << " " << wagi[n].first << endl;
suma=suma+wagi[n].first;
wagi[n].first=suma;
if ((suma >= max) and (juz == 0))
{
nr = n - 1;
juz = 1;
}
}
// cout << nr << endl;
// for (int n=0; n<ileR; n++)
// {
// cout << wagi[n].first << " " << wagi[n].second << " " << krol[n] << " " << wzor[n].first <<endl;
// }
for (int n=0; n<ileR; n++)
{
// cout << wagi[n].first << " " << wagi[n].second << " " << krol[n] << endl;
if (min != max)
if (wagi[n].first >= max)
krol[wagi[n].second]="T";
}
if (wagi[nr].first + wzor[nr].first >= max)
tawaga=wzor[nr].first;
//for (int n=0; n<ileR; n++)
// cout << krol[n];
//cout << tawaga << endl;;
if ((wzor[nr-1].first == tawaga) and (pocz ==0))
while (wzor[nr].first == tawaga)
{
krol[wagi[nr].second]="T";
nr=nr-1;
}
}
for (int n=0; n<ileR; n++)
cout << krol[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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | #include <iostream> #include <algorithm> #include <cstdio> #include <vector> #include <string> #include <cstdlib> #include <cstring> using namespace std; int main () { ios_base::sync_with_stdio(0); int ileR, waga, max, min, suma, nr, juz, tawaga, pocz; vector <pair <int,int>> wagi; vector <pair <int,int>> wzor; vector <string> krol; max=0; min=0; juz=0; tawaga=0; pocz=0; cin >> ileR; for (int n=1; n<=ileR; n++) krol.push_back("N"); for (int n=1; n<=ileR; n++) { cin >> waga; wagi.push_back(make_pair(waga,n-1)); wzor.push_back(make_pair(waga,n-1)); } sort (wagi.begin(), wagi.end()); sort (wzor.begin(), wzor.end()); min=wagi[0].first; max=wagi[ileR-1].first; // cout << min << " " << max << endl;; // for (int n=0; n<ileR; n++) // { // cout << wagi[n].first << " " << wagi[n].second << " " << krol[n] << endl; // } if ((ileR == 2) and (wagi[1].first > wagi[0].first)) krol[wagi[1].second]="T"; else { suma=wagi[0].first; if (wagi[0].first != wagi[1].first) { suma=suma+wagi[1].first; wagi[1].first=suma; if ((suma >= max) and (juz == 0)) { nr = 0; juz = 1; } } else pocz=1; for (int n=2; n<ileR; n++) // for (int n=1; n<ileR; n++) { //cout << n << " " << wagi[n].first << endl; suma=suma+wagi[n].first; wagi[n].first=suma; if ((suma >= max) and (juz == 0)) { nr = n - 1; juz = 1; } } // cout << nr << endl; // for (int n=0; n<ileR; n++) // { // cout << wagi[n].first << " " << wagi[n].second << " " << krol[n] << " " << wzor[n].first <<endl; // } for (int n=0; n<ileR; n++) { // cout << wagi[n].first << " " << wagi[n].second << " " << krol[n] << endl; if (min != max) if (wagi[n].first >= max) krol[wagi[n].second]="T"; } if (wagi[nr].first + wzor[nr].first >= max) tawaga=wzor[nr].first; //for (int n=0; n<ileR; n++) // cout << krol[n]; //cout << tawaga << endl;; if ((wzor[nr-1].first == tawaga) and (pocz ==0)) while (wzor[nr].first == tawaga) { krol[wagi[nr].second]="T"; nr=nr-1; } } for (int n=0; n<ileR; n++) cout << krol[n]; return 0; } |
English