交叉排序-sort
答案:
这里自己定义下标为1开始计算
#include <iostream>
#include <algorithm>
using namespace std;
int A[100005];//开大一点
int main()
{
int N,l1,r1,l2,r2;
cin>>N>>l1>>r1>>l2>>r2;
for(int i = 1;i<=N;i++)//使用1-N更加方便
{
cin>>A[i];
}
sort(A+l1,A+r1+1);//sort是左闭右开的,记住
sort(A+l2,A+r2+1,greater<int>());//改为降序
for(int i = 1;i<=N;i++)
{
if(i!=N)
{
cout<<A[i]<<" ";
}
else
{
cout<<A[i]<<endl;
}
}
}
法二:从0开始,注意输出格式
#include <iostream>
#include <algorithm>
using namespace std;
int a[100005];
int main()
{
int N,l1,r1,l2,r2;
cin>>N>>l1>>r1>>l2>>r2;
for(int i =0;i<N;i++)
{
cin>>a[i];
}
sort(a+l1-1,a+r1);//sort左闭右开
sort(a+l2-1,a+r2,greater<int>());
for(int i =0;i<N;i++)
{
if(i!=N-1)
{
cout<<a[i]<<" ";
}else{
cout<<a[i]<<endl;
}
}
return 0;
}