题目描述
现在告诉你一个长为 的序列 。
给出 组询问,每组询问给出 ,表示询问这个序列中除去 和 之外的最大值。
输入格式第一行两个整数 ,表示序列中的元素数量和询问数量。
接下来一行 个数,表示序列 。
接着 行,每行两个整数 ,含义如题意所述
输出格式输出共 行,表示每一个询问的答案。
样例Input #1
5 3
1 5 2 4 3
2 4
2 5
1 3
Output #1
3
4
5
数据范围与提示
初始的 序列为 。
对于询问
。
。
。
无特殊限制。
对于 的数据,有 。
分类标签[枚举]
C++题解代码
#include <bits/stdc++.h>
using namespace std;
int a;
int b;
int c;
int e;
int f;
int d[2][4];
// The main procedure
int main() {
cin>>a;
cin>>b;
for (int i = 1; i <= a; i++) {
cin>>c;
for (int j = 3; j > 0; j--) {
if (c > d[0][j]) {
for (int k = 1; k < j; k++) {
d[0][k] = d[0][(k+1)];
d[1][k] = d[1][(k+1)];
}
d[0][j] = c;
d[1][j] = i;
break;
}
}
}
for (int i = 1; i <= b; i++) {
cin>>e;
cin>>f;
for (int j = 3; j > 0; j--) {
if ((d[1][j] != e) && (d[1][j] != f)) {
cout<<d[0][j];
break;
}
}
if (i < b) {
cout<<'\n';
}
}
return 0;
}
Blockly题解代码图片