时间限制: 1.000 Sec 内存限制: 128 MB
提交: 298 解决: 262
[命题人:][下载数据: ?]
提交状态报告
题目描述
给定一个N个数的数组,M次操作。每次操作将数组的一段翻转,求最后的数组。
输入
第一行两个整数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;
int main()
{
vector<int> a;
int n,m,x,y,t;
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>t;
a.push_back(t);
}
for(int i=0;i<m;i++)
{
cin>>x>>y;
reverse(a.begin()+x-1,a.begin()+y);
}
for(int i=0;i<a.size();i++)
cout<<a[i]<<' ';
return 0;
}