zoj 3429 Cube Simulation(@-@)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

 

#define MAXSIZE 1005

int x[MAXSIZE], y[MAXSIZE], z[MAXSIZE];

inline void swap(int &a, int &b)
{
    int t = a;
    a = b;
    b = t;
}

int main()
{
    #ifndef ONLINE_JUDGE
    freopen("indata.txt", "r", stdin);
    #endif

    int X, Y, Z;
    int a, b, c;
    char cmd[10];

    while(scanf("%s", cmd) != EOF)
    {
        if(strcmp("FILL", cmd) == 0)
        {
            printf("START\n"); //不要写在while外面。。。
            scanf("%d %d %d", &X, &Y, &Z);
            for(int i = 0; i < X; i++) x[i] = i;
            for(int i = 0; i < Y; i++) y[i] = i;
            for(int i = 0; i < Z; i++) z[i] = i;
        }
        else if(strcmp("SWAP1", cmd) == 0)
        {
            scanf("%d %d", &a, &b);
            swap(x[a], x[b]);
        }
        else if(strcmp("SWAP2", cmd) == 0)
        {
            scanf("%d %d", &a, &b);
            swap(y[a], y[b]);
        }
        else if(strcmp("SWAP3", cmd) == 0)
        {
            scanf("%d %d", &a, &b);
            swap(z[a], z[b]);
        }
        else if(strcmp("FIND", cmd) == 0)
        {
            int value;
            scanf("%d", &value);
            if(value > X * Y * Z) continue;

            --value;
            a = value / (Y * Z);
            value %= (Y * Z);

            b = value / Z;

            c = value % Z;

            for(int i = 0; i < X; i++)
                if(a == x[i])
                {
                    a = i;
                    break; //!
                }
            for(int i = 0; i < Y; i++)
                if(b == y[i])
                {
                    b = i;
                    break; //!
                }
            for(int i = 0; i < Z; i++)
                if(c == z[i])
                {
                    c = i;
                    break; //!
                }

            printf("%d %d %d\n", a, b, c);
        }
        else if(strcmp("QUERY", cmd) == 0)//!
        {
            scanf("%d %d %d", &a, &b, &c);
            a = x[a];
            b = y[b];
            c = z[c];

            int value = a * Y * Z;
            value += b * Z + c + 1;
            printf("%d\n", value);
        }
      //  else break;
    }
    return 0;
}

posted @ 2010-11-14 23:51  菜到不得鸟  阅读(145)  评论(0)    收藏  举报