题目描述
给定含有m+n个元素的整型数组A(其中m>0, n>0),它分为两个互不重叠的,长度分别为m和n的子数组段,写出交换这两个子数组段的程序,要求不引入数组A以外的数组,但可引入若干中间变量。
输入格式
输入共两行
第一行两个整数n,m
第二行共n+m个数,代表a数组中的数
输出格式
输出共n+m个整数,用空格分隔开,代表反转之后的数组
输入输出样例
输入 #1 复制
3 2
1 2 3 4 5
输出 #1 复制
4 5 1 2 3
说明/提示
1≤n,m≤10 5
1≤a[i]≤10 9
#include<iostream>
using namespace std;
int main(){
int n,m,*p,k;
cin>>n>>m;
p = new int[n+m];
for(int i=0;i<m+n;i++)
cin>>*(p+i);
for(int i=n-1;i>=0;i--){
k = *(p+i);
for(int j=0;j<m;j++){
*(p+i+j) = *(p+i+j+1);
}
*(p+i+m) = k;
}
for(int i=0;i<m+n;i++){
cout<<*(p+i)<<" ";
}
return 0;
}
上面的是我自己写的,但是洛谷超出时间限制了,唉。
不知道为什么开启O2优化,就可以了。
迷茫