0分求助
  • 板块P1188 PASTE
  • 楼主Hy13_xsm
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/30 20:44
  • 上次更新2024/3/30 22:35:42
查看原帖
0分求助
1079493
Hy13_xsm楼主2024/3/30 20:44
#include<bits/stdc++.h>
using namespace std;
int n,k,a[100005],tmp[100005];
void copy(int tmp[],int x,int y)
{
	int cnt=0;
	for(int i=x;i<=y;i++)
	tmp[++cnt]=a[i];
}//复制操作
void rub(int s,int x,int y)
{
	int l=y+1;int r=l+s-1;
	for(int i=x,j=l;i<=y;i++,j++)
	a[i]=a[j];
	n-=s;//重新定义长度 
}
void move(int s,int pos,int x,int y)
{
	
	for(int i=pos,j=pos+s;i-pos+1<=s;i++,j++)
	a[j]=a[i];
	for(int i=pos,j=1;i<=pos+s-1;i++,j++)
	a[i]=tmp[j];
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	a[i]=i;
	for(int i=1;i<=k;i++)
	{
		int l,r,k;
		cin>>l>>r>>k;
		int len=r-l+1;//求出区间长度
		copy(tmp,l,r);
		rub(len,l,r);
		move(len,k+1,l,r); 
	}
	for(int i=1;i<=10;i++)
	cout<<a[i]<<endl;
	return 0;
}
2024/3/30 20:44
加载中...