题目:
思路分析:
链表的方式建立一个小根堆就行
代码实现:
const int MAX=10010;
int n,m;
int cnt;
int dui[MAX];
map<int,int>p;
void built(int x){
dui[++cnt]=x;
int t=cnt;
while (t>1&&dui[t/2]>dui[t]) {
swap(dui[t/2],dui[t]);
t/=2;
}
// cout<<"t: "<<x<<endl;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int x;
cin>>x;
built(x);
}
for(int i=1;i<=n;i++){
p[dui[i]]=i;
}
while(m--){
string str;
int x, y;
cin >> x >> str;
if(str[0]=='a'){
cin>>y>>str>>str;
if(p[x]/2==p[y]/2)
cout<<"T"<<endl;
else
cout<<"F"<<endl;
}else{
cin >> str >> str;
if(str[0] == 'c'){
cin >> str >> y;
if(p[x]/2==p[y])
cout << "T" << endl;
else
cout << "F" << endl;
}else if(str[0]=='r'){
if(p[x]==1)
cout << "T" << endl;
else
cout << "F" << endl;
}else if(str[0]=='p'){
cin >> str >> y;
if(p[x]==p[y]/2)
cout << "T" << endl;
else
cout << "F" << endl;
}
}
}
}