gespC14B4041GESP202409___0">gesp(C++四级)(14)洛谷:B4041:[GESP202409 四级] 区间排序
题目描述
小杨有一个包含 n n n 个正整数的序列 a a a。
小杨计划对序列进行多次升序排序,每次升序排序小杨会选择一个区间 [ l , r ] [l,r] [l,r]( l ≤ r l \leq r l≤r)并对区间内所有数字,即进行升序 a l , a l + 1 , … a r a_l, a_{l + 1}, \dots a_r al,al+1,…ar 排序。每次升序排序会在上一次升序排序的结果上进行。
小杨想请你计算出多次升序排序后的序列。
输入格式
第一行包含一个正整数 n n n,含义如题面所示。
第二行包含 n n n 个正整数 a 1 , a 2 , … a n a_1, a_2, \dots a_n a1,a2,…an,代表序列 a a a。
第三行包含一个正整数 q q q,代表排序次数。
之后 q q q 行,每行包含两个正整数 l , r l, r l,r,代表将区间 [ l i , r i ] [l_i, r_i] [li,ri] 内所有数字进行升序排序。
输出格式
输出一行包含 n n n 个正整数,代表多次升序排序后的序列。
样例 #1
样例输入 #1
5
3 4 5 2 1
3
4 5
3 4
1 3
样例输出 #1
1 3 4 5 2
提示
样例 1 解释
- 第一次升序排序后,序列为 [ 3 , 4 , 5 , 1 , 2 ] [3,4,5,1,2] [3,4,5,1,2];
- 第二次升序排序后,序列为 [ 3 , 4 , 1 , 5 , 2 ] [3,4,1,5,2] [3,4,1,5,2];
- 第三次升序排序后,序列为 [ 1 , 3 , 4 , 5 , 2 ] [1,3,4,5,2] [1,3,4,5,2];
数据规模与约定
对于全部的测试数据,保证 1 ≤ n , a i , q ≤ 100 1 \leq n, a_i, q \leq 100 1≤n,ai,q≤100, 1 ≤ l i ≤ r i ≤ n 1 \leq l_i \leq r_i \leq n 1≤li≤ri≤n。
AC代码(100分)
#include<bits/stdc++.h>
using namespace std;
//思路:sort函数实现排序
int n,a[110],q,l,r;
int main(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];cin>>q;while(q--){cin>>l>>r;sort(a+l,a+r+1);}for(int i=1;i<=n;i++){cout<<a[i]<<" ";}return 0;
}
文末彩蛋:
点击王老师青少年编程主页有更多精彩内容