2014年3月6日 星期四

[HOJ] 50 - 幸福幼稚園


#include<stdio.h>
#include<string.h>
struct P{
    int x,y;
}s[65005]={0};
int arr[65005];
char c[5];
int main(){
    int n,x,i,L,R;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&arr[i]);
        if(i){
            s[arr[i]].x=arr[i-1];
        }
    }
    for(i=0;i<n-1;i++)
        s[arr[i]].y=arr[i+1];
    L=arr[0],R=arr[n-1];
    while(scanf("%s",c)!=EOF){
        if(c[0]=='C') break;
        scanf("%d",&x);

        if(c[0]=='A'){
            if(x==L) continue;
            if(x==R){
                R=s[x].x;
                s[x].x=0;
                s[x].y=L;
                L=x;
                continue;
            }
            s[s[x].x].y=s[x].y;
            s[s[x].y].x=s[x].x;
            s[L].x=x;
            s[x].x=0;
            s[x].y=L;
            L=x;
        }
        else{
            if(x==R) continue;
            if(x==L){
                L=s[x].y;
                s[x].y=0;
                s[x].x=R;
                R=x;
                continue;
            }
            s[s[x].x].y=s[x].y;
            s[s[x].y].x=s[x].x;
            s[R].y=x;
            s[x].y=0;
            s[x].x=R;
            R=x;
        }
    }
    printf("%d",L);
    L=s[L].y;
    while(L){
        printf(" %d",L);
        L=s[L].y;
    }
    puts("");
}

沒有留言:

張貼留言