#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
int arr[1005];
int n,m;
int a,b;
void change(int a,int b){
int temp;
for(a;a<b;a++,b--){
temp=arr[b];
arr[b]=arr[a];
arr[a]=temp;
}
}
int main(){
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",arr[i]);
}
for(int i=0;i<m;i++){
scanf("%d %d\n",&a,&b);
change(a-1,b);
}
for(int i=0;i<n;i++){
printf("%d ",arr[i]);
}
return 0;
}
Description
给定一个N个数的数组,M次操作。每次操作将数组的一段翻转,求最后的数组。(后期可以尝试reverse函数)
Input
第一行两个整数N,M(N,M≤1000)含义见试题描述。
第二行N个整数,表示原来的数组。
接下来M行,每行两个整数X,Y(1≤X≤Y≤N),表示翻转区间[X,Y]。
Output
一行N个整数,表示操作后的数组。
Sample Input 1
5 2 1 2 3 4 5 2 4 4 5
Sample Output 1
1 4 3 5 2
Source
容器 vector