1571: 【作】【入门】数字翻转(1502)

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:15 解决:12

题目描述

给定一个N个数的数组,M次操作。每次操作将数组的一段翻转,求最后的数组。(提示:可以尝试reverse函数)

输入

第一行两个整数N,M(N,M≤1000)含义见试题描述。
第二行N个整数,表示原来的数组。
接下来M行,每行两个整数X,Y(1≤X≤Y≤N),表示翻转区间[X,Y]。

输出

一行N个整数,表示操作后的数组。

样例输入 复制

5 2
1 2 3 4 5
2 4
4 5

样例输出 复制

1 4 3 5 2

提示

#include<bits/stdc++.h>
using namespace std;
vector<int> v;

int main(){
	int n,m,i,t,x,y;
    cin>>n>>m;
    for (i=0;i<n;i++) {
    	cin>>t;
    	v.push_back(t);
	}
	while (m--) {
		cin>>x>>y;			
		reverse(v.begin()+x-1,v.begin()+y);
	}
	for (i=0;i<v.size();i++) 
	    cout<<v[i]<<" ";
	return 0;
}