#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
vector<int> v(n+1);
for (int i = 1; i <= n;++i){
int x;
cin >> x;
int j =i;
for (;j>1&& v[j / 2] > x;j/=2){
v[j] = v[j / 2];
}
v[j] = x;
}
unordered_map<int, int> mp;
for (int i = 1; i <= n;++i)
mp[v[i]] = i;
int x, y;
string s;
for (int i = 0; i < m;++i){
cin >> x >> s;
if(s[0]=='a'){
cin >> y>>s>>s;
puts(mp[x] / 2 == mp[y] / 2 ? "T" : "F");
}else{
cin >> s >> s;
if(s[0]=='r'){
puts(mp[x] == 1 ? "T" : "F");
}else if(s[0]=='p'){
cin >> s >> y;
puts(mp[x] == mp[y] / 2 ? "T" : "F");
}else {
cin >> s >> y;
puts(mp[y] == mp[x] / 2 ? "T" : "F");
}
}
}
}
L2-012 关于堆的判断 (25 分)
最新推荐文章于 2022-04-21 22:04:17 发布