Seauy @ 2019-02-11 00:03:37
过路的大佬能帮我看一下吗,超时且先别谈,是WA了
#include<bits/stdc++.h>
using namespace std;
int n,k,File[100001];
queue<int> pasterd;
int main()
{
scanf("%d %d",&n,&k);//文件大小和操作次数
for(int i=1;i<=n;i++) File[i]=i;
while(k--)
{
int a,b,c;//剪切文本 a~b 行,黏贴到剪下后文本的 c 行后面
scanf("%d %d %d",&a,&b,&c);
for(int i=a;i<=b;i++)
{
pasterd.push(File[i]);
if(b+i-a+1<=n) File[i]=File[b+i-a+1];
}
//for(int i=1;i<=n;i++) cout<<File[i]<<' ';
//cout<<endl;
//此时 pasterd 中有 b-a+1 个数据
//File 最后一个数据在 n+a-b-1 处
//我们要将 c 后面所有数据向后移动 b-a+1 格
for(int i=n+a-b-1;i>c;i--) File[i+b-a+1]=File[i];
//for(int i=1;i<=n;i++) cout<<File[i]<<' ';
//cout<<endl;
for(int i=c+1;i<=c+b-a+1;i++)
{
File[i]=pasterd.front();
pasterd.pop();
}
//for(int i=1;i<=n;i++) cout<<File[i]<<' ';
//cout<<endl;
}
for(int i=1;i<=10;i++) cout<<File[i]<<endl;
return 0;
}
难道是我题目理解错了吗QAQ