为什么错了啊QAQ

P1188 PASTE

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


|