题目
去官网看
思路
这道题没什么特别的地方,完全按照题目的要求写出来就过了,不过问题在于使用STL的vector的erase函数时,it指针会变成空指针,所以要将函数结果重新赋值给it指针,再进行插入操作,否则VS 2017会报错。
具体可以查看参考中的文章,讲的很好。
C++ 代码
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<int> t;
for (int i = 1; i <= n; ++i)
{
t.push_back(i);
}
for (int i = 0; i < m; ++i)
{
int val, dir;
cin >> val >> dir;
vector<int>::iterator it;
for (it = t.begin(); it != t.end(); it++)
{
if (*it == val)
{
break;
}
}
it = t.erase(it);
t.insert(it + dir, val);
}
for (size_t i = 0; i < t.size(); ++i)
{
cout << t.at(i) << " ";
}
cout << endl;
system("pause");
return 0;
}