题目

蒜头君很无聊,现在有 <math> <semantics> <mrow> <mi> N </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> N </annotation> </semantics> </math>N 个数,其中第 <math> <semantics> <mrow> <mi> i </mi> <mo> ( </mo> <mn> 1 </mn> <mo> ≤ </mo> <mi> i </mi> <mo> ≤ </mo> <mi> N </mi> <mo> ) </mo> </mrow> <annotation encoding="application&#47;x&#45;tex"> i(1 \leq i \leq N) </annotation> </semantics> </math>i(1iN) 个数是 <math> <semantics> <mrow> <msub> <mi> A </mi> <mi> i </mi> </msub> </mrow> <annotation encoding="application&#47;x&#45;tex"> A_i </annotation> </semantics> </math>Ai

现在他先将 <math> <semantics> <mrow> <msub> <mi> A </mi> <msub> <mi> l </mi> <mn> 1 </mn> </msub> </msub> <mo separator="true"> , </mo> <msub> <mi> A </mi> <mrow> <msub> <mi> l </mi> <mn> 1 </mn> </msub> <mo> + </mo> <mn> 1 </mn> </mrow> </msub> <mi mathvariant="normal"> . </mi> <mi mathvariant="normal"> . </mi> <mi mathvariant="normal"> . </mi> <msub> <mi> A </mi> <msub> <mi> r </mi> <mn> 1 </mn> </msub> </msub> </mrow> <annotation encoding="application&#47;x&#45;tex"> A_{l_1}, A_{l_1+1}...A_{r_1} </annotation> </semantics> </math>Al1,Al1+1...Ar1 从小到大排序。

再将 <math> <semantics> <mrow> <msub> <mi> A </mi> <msub> <mi> l </mi> <mn> 2 </mn> </msub> </msub> <mo separator="true"> , </mo> <msub> <mi> A </mi> <mrow> <msub> <mi> l </mi> <mn> 2 </mn> </msub> <mo> + </mo> <mn> 1 </mn> </mrow> </msub> <mi mathvariant="normal"> . </mi> <mi mathvariant="normal"> . </mi> <mi mathvariant="normal"> . </mi> <msub> <mi> A </mi> <msub> <mi> r </mi> <mn> 2 </mn> </msub> </msub> </mrow> <annotation encoding="application&#47;x&#45;tex"> A_{l_2}, A_{l_2+1}...A_{r_2} </annotation> </semantics> </math>Al2,Al2+1...Ar2 从大到小排序。

请输出 <math> <semantics> <mrow> <mi> A </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> A </annotation> </semantics> </math>A 排序后的最终结果。

输入格式

第一行五个整数 <math> <semantics> <mrow> <mi> N </mi> <mo separator="true"> , </mo> <msub> <mi> l </mi> <mn> 1 </mn> </msub> <mo separator="true"> , </mo> <msub> <mi> r </mi> <mn> 1 </mn> </msub> <mo separator="true"> , </mo> <msub> <mi> l </mi> <mn> 2 </mn> </msub> <mo separator="true"> , </mo> <msub> <mi> r </mi> <mn> 2 </mn> </msub> <mo> ( </mo> <msub> <mi> l </mi> <mn> 1 </mn> </msub> <mo> &lt; </mo> <msub> <mi> r </mi> <mn> 1 </mn> </msub> <mo separator="true"> , </mo> <msub> <mi> l </mi> <mn> 2 </mn> </msub> <mo> &lt; </mo> <msub> <mi> r </mi> <mn> 2 </mn> </msub> <mo> ) </mo> </mrow> <annotation encoding="application&#47;x&#45;tex"> N, l_1, r_1, l_2, r_2(l_1 \lt r_1,l_2 \lt r_2) </annotation> </semantics> </math>N,l1,r1,l2,r2(l1<r1,l2<r2),均不超过 <math> <semantics> <mrow> <mn> 100000 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 100000 </annotation> </semantics> </math>100000

第二行 <math> <semantics> <mrow> <mi> N </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> N </annotation> </semantics> </math>N 个不超过 int 范围的整数,表示 <math> <semantics> <mrow> <mi> A </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> A </annotation> </semantics> </math>A 数组。

输出格式

一行 <math> <semantics> <mrow> <mi> N </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> N </annotation> </semantics> </math>N 个用空格分隔的整数,表示 <math> <semantics> <mrow> <mi> A </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> A </annotation> </semantics> </math>A 排序以后的结果。

样例输入

6 1 3 2 4

8 3 1 6 9 2

样例输出

1 8 6 3 9 2

题解

使用 algorithm 下的 sort 排序

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
	return a>b;
}
int main(){
	int n;
	int l1,r1,l2,r2;
	int a[100000+5];
	cin>>n>>l1>>r1>>l2>>r2;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+l1,a+r1+1);  // [l1,r1+1) 排序
	sort(a+l2,a+r2+1,cmp);
	for(int i=1;i<=n;i++)
		if(i==1)
			cout<<a[i];
		else
			cout<<" "<<a[i];
	return 0;
}

返回目录,查看更多