50045. Mines and Black Holes
難度:3/51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
int now_x, now_y, now_z;
int mine_x, mine_y, mine_z;
int black_x, black_y, black_z;
int n;
int dx[] = {1, -1, 0, 0, 0, 0};
int dy[] = {0, 0, 1, -1, 0, 0};
int dz[] = {0, 0, 0, 0, 1, -1};
bool ship_flag = true;
bool black_flag = true;
void ipt(){
scanf("%d %d %d", &now_x, &now_y, &now_z);
scanf("%d %d %d", &mine_x, &mine_y, &mine_z);
scanf("%d %d %d", &black_x, &black_y, &black_z);
scanf("%d", &n);
}
int dist(int x1, int y1, int z1, int x2, int y2, int z2){
return abs(x1 - x2) + abs(y1 - y2) + abs(z1 - z2);
}
void move(){
int d; scanf("%d", &d); d -= 1;
now_x += dx[d], now_y += dy[d], now_z += dz[d];
int mine_dist = dist(now_x, now_y, now_z, mine_x, mine_y, mine_z);
int black_dist = dist(now_x, now_y, now_z, black_x, black_y, black_z);
if(mine_dist < 10){
ship_flag = false;
}
else if(black_dist < 10 && black_flag == true){
now_x = black_x, now_y = black_y, now_z = black_z;
black_flag = false;
}
return;
}
int main(){
ipt();
for(int i = 1; i <= n && ship_flag; i++){
move();
if(ship_flag == false) break;
if(i % 5 == 0) printf("%d %d %d\n", now_x, now_y, now_z);
}
}