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;
}
浙公网安备 33010602011771号