问题标题: 酷町堂:7145 90分 Time Limit Exceeded

0
0
已解决
崔皓博
崔皓博
新手光能
新手光能

题目链接: 酷町堂:7145

#include<iostream>

using namespace std;

int m,n,a[100005],t,p,q;

int f(int x){

    for(int i=1;i<=n;i++){

        if(a[i]==x){

            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-1;i>=1;i--){
        
                a[i+1]=a[i];
        
            }
        
            a[1]=p;
        
        }else if(t==2){
        
            cin>>p;
        
            int pos=f(p);
        
            for(int i=pos+1;i<=n;i++){
        
                a[i-1]=a[i]; 
        
        
            }
        
            a[n]=p;
        
        }else{
        
            cin>>p>>q;
        
            int pos1=f(p);
        
            int pos2=f(q);
        
            if(pos1<pos2){
        
                for(int i=pos1+1;i<=pos2;i++){
        
                    a[i-1]=a[i];
        
                }
        
                a[pos2]=p;
        
            }else if(pos1>pos2){
        
                for(int i=pos1-1;i>=pos2+1;i--){
        
                    a[i+1]=a[i];
        
                }
        
                a[pos2+1]=p;
        
            }
        }
        
    }
    
    for(int i=1;i<=n;i++){
        
        cout<<a[i]<<" ";
        
    }
    
    return 0;
    
}

我要回答