交叉排序问题
原创
©著作权归作者所有:来自51CTO博客作者yitahutu79的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述
索隆很无聊,现在有 N 个数,第 i 个数是 Ai(i 从 1 开始) 。
现在他先将 Al1,Al1+1,…,Ar1 从小到大排序。
再将 Al2,Al2+1,…,Ar2 从大到小排序。
请输出 A 的排序结果。
输入
第一行五个整数 N,l1,r1,l2,r2(l1<r1,l2<r2),均不超过 10000 。
第二行 N 个整数,表示 A 数组。
输出
一行 N 个整数,表示 A 排序以后的结果。
样例输入1
6 1 3 2 4
8 3 1 6 9 2
样例输出1
1 8 6 3 9 2
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a, int b) {
return a > b;
}
int main() {
int n, l1, r1, l2, r2;
cin >> n >> l1 >> r1 >> l2 >> r2;
int num[10005] = { 0 };
for (int i = 0; i < n; i++) {
cin >> num[i];
}
sort(num + l1 - 1,num + r1);
sort(num + l2 - 1, num + r2, cmp);
for (int i = 0; i < n; i++) {
if (i) cout << " ";
cout << num[i];
}
return 0;
}