题目描述
blablabla
样例
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
unordered_map<int ,int>n_t_p;
map<int,int> p_t_n;
for(int i=1;i<=n;++i){
n_t_p[i]=i;
p_t_n[i]=i;
}
while(m--){
int x,move,p_x;
cin>>x>>move;
p_x=n_t_p[x];
if(move>0){
//修改由位置到名称的映射
for(int i=p_x;i-p_x<move;++i){
p_t_n[i]=p_t_n[i+1];
}
p_t_n[p_x+move]=x;
//修改由名称到位置的映射
for(int i=p_x;i-p_x<=move;++i){
int name=p_t_n[i];
n_t_p[name]=i;
}
}
if(move<0){
move=abs(move);
//修改由位置到名称的映射
for(int i=p_x;p_x-i<move;--i){
p_t_n[i]=p_t_n[i-1];
}
p_t_n[p_x-move]=x;
//修改由名称到位置的映射
for(int i=p_x;p_x-i<=move;--i){
int name=p_t_n[i];
n_t_p[name]=i;
}
}
}
for(int i=1;i<=n;++i)cout<<p_t_n[i]<<' ';
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla