问题标题: 酷町堂:7145 整理书本(book)

0
0
已解决
李泽屿
李泽屿
新手启示者
新手启示者

题目链接: 酷町堂:7145

#include<iostream>
using namespace std;
int n,m,p,q,t,a[100005];
int f(int u){
    for(int i=1;i<=n;i++){
        if(a[i]==u) return i;
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)    a[i]=i;
    while(m--){
        cin>>t;
        if(t==1){
            cin>>p;
            int pos=f(p);
            for(int i=pos;i>=2;i--){
                a[i]=a[i-1];
            }
            a[1]=p;
        }else if(t==2){
            cin>>p;
            int pos=f(p); 
            for(int i=pos;i<n;i++){
                a[i]=a[i+1];
            }
            a[n]=p;
        }else{
            cin>>p>>q;
            int u=f(p),v=f(q);
            if(u<v){//在前面
                if(v==n){   
                    for(int i=u;i<=v;i++){
                        a[i]=a[i+1];
                    }
                }else{
                    for(int i=u;i<=v-1;i++){
                        a[i]=a[i+1];
                    }
                }
                a[v]=p;
            }else if(u>v){//在后面 
                for(int i=u;i>=v+2;i--){
                    a[i]=a[i-1];
                }
                a[v+1]=p;
            }
        }
    }
    for(int i=1;i<=n;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}

诶,TLE 90分


0
已采纳
潘登
潘登
高级天翼
高级天翼

你这不还是冲刺班之前的吗?正解要用数组模拟链表,这个一时你也搞不懂,你就先这样写吧。

0
姚天宇
姚天宇
高级光能
高级光能

冲刺班讲的是TLE90分模拟的写法

0
李轩昂
李轩昂
初级光能
初级光能

用模拟链表写,冲刺班会上

0
0
熊潇然
熊潇然
初级启示者
初级启示者

我也是TLE 90分

会讲的,采纳我吧

我要回答