题型:编程题
区间排序
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有一个包含n个正整数的序列a。
小杨计划对序列进行多次升序排序,每次升序排序小杨会选择一个区间[l,r](l≤r) 并对区间内所有数字,即al,al+1,...,ar进行升序排序。每次升序排序会在上一次升序排序的结果上进行。
小杨想请你计算出多次升序排序后的序列。
输入格式
第一行包含一个正整数n,含义如题面所示。
第二行包含n个正整数 a1,a2,...,an,代表序列。
第三行包含一个正整数q,代表排序次数。
之后q行,每行包含两个正整数li,ri,代表将区间[li,ri] 内所有数字进行升序排序。 ,
输出格式
输出一行包含n个正整数,代表多次升序排序后的序列。
输入样例
5 3 4 5 2 1 3 4 5 3 4 1 3
输出样例
1 3 4 5 2
第一次升序排序后,序列为[3,4,5,1,2];
第二次升序排序后,序列为[3,4,1,5,2];
第三次升序排序后,序列为[1,3,4,5,2];
对于全部数据,保证有1≤n≤100,1≤ai≤100,1≤q≤100,1≤li≤ri≤n。
更新时间:2025-05-18 13:09:13
|
【知识点】
CCF—GESP C++四级
抱歉! 您未登录, 不能查看答案和解析点击登录
相似题推荐
判断题
下面程序执行后输出 2010 。
int x = 10;
void f() { int x = 20; cout << x; }
int main() {
f();
cout << x;
} | A.正确 | B.错误 |
2026-09-29
判断题
下面程序可以正常编译并输出 10 。
int calc(int x, int y = 10);
int calc(int x) { return x * 2; }
int calc(int x, int y) { return x * y; }
int main() {
cout << calc(5);
} | A.正确 | B.错误 |
2026-09-29
判断题
下面程序能够把 Hello 写入 data.txt 文件中。
ofstream fout("data.txt");
cout << "Hello";
fout.close(); | A.正确 | B.错误 |
2026-09-29
单选题
执行 climb(6) 的返回值为( )。
int climb(int n){
if(n <= 2) return n;
int a = 1, b = 2, c = 0;
for(int i = 3; i <= n; i++){
c = a + b;
a = b;
b = c;
}
return c;
} | A. 8 |
B. 13 |
| C. 5 |
D. 10 |
2026-09-29
单选题
已知:
int a[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int (*p)[4] = a;则表达式 *(*(p + 2) + 1) 的值为( )。
| A. 6 |
B. 10 |
| C. 9 |
D. 11 |
2026-09-29
