求助 0分样例可过

P1188 PASTE

Dust_Settled @ 2023-10-12 00:40:02

#include<bits/stdc++.h>
using namespace std;
int n,k,z[100005];
int main (){
    cin>>n>>k;
    for(int i=1;i<=n;i++) z[i]=i;
    for(int i=1;i<=k;i++){
        int a,b,c;cin>>a>>b>>c;
        int tmp[b-a+2],t=0;
        for(int j=a;j<=b;j++) tmp[++t]=z[j];
        if(c<a-1){
            for(int j=c+1;j<=a-1;j++) z[j+t]=z[j];
            for(int i=c+1,j=1;j<=t;i++,j++) z[i]=tmp[j];
        }
        else
            if(c>a-1){
                for(int j=b+1;j<=c;j++) z[j-t]=z[j];
                for(int i=c+1-t,j=1;j<=t;i++,j++) z[i]=tmp[j];
            }
    }
    for(int i=1;i<=10;i++){
        cout<<z[i]<<'\n';
    }
    return 0;
}

by 123huchenghao @ 2024-06-28 17:06:59

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int N=100010;

int n,k,cnt;
int doc[N],tmp[N];

int main () {
    for(int i=1; i<=N; i++)
        doc[i]=i;
    scanf("%d%d",&n,&k);
    for(int j=0; j<k; j++) {
        int s,t,p1,p2,ins,len;
        scanf("%d%d%d",&s,&t,&ins);
        len=t-s+1;
        p1=ins+1;
        p2=p1+len-1;
        cnt=0;
        for(int i=s; i<=t; i++)
            tmp[++cnt]=doc[i];
        if(ins<s)
            for(int i=s-1; i>=p1; i--)
                doc[i+len]=doc[i];
        else
            for (int i=t+1; i<=p2; i++)
                doc[i-len]=doc[i];
        for(int i=p2; i>=p1; i--)
            doc[i]=tmp[cnt--];
    }
    for(int i=1; i<=10; i++)
        printf("%d\n",doc[i]);
    return 0;
}

|