Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- using namespace std;
- int Y, X;
- int map[55][55];
- int dy[] = { -1,0,1,0 };
- int dx[] = { 0,1,0,-1 };
- int changeDir(int d) {
- return (d + 3) % 4;
- }
- int backDir(int d) {
- return (d + 2) % 4;
- }
- int main() {
- int y, x, d;
- scanf("%d %d", &Y, &X);
- scanf("%d %d %d",&y,&x,&d);
- for (int i = 0; i < Y; i++) {
- for (int j = 0; j < X; j++) {
- scanf("%d",&map[i][j]);
- }
- }
- int ans = 0;
- while (true) {
- if (map[y][x] == 0) {
- map[y][x] = 2;
- ans++;
- }
- int i;
- for (i = 0; i < 4; i++) {
- d = changeDir(d);
- if (y + dy[d] >= 0 && y + dy[d] < Y && x + dx[d] >= 0 && x + dx[d] < X) {
- if (map[y + dy[d]][x + dx[d]] == 0) {
- y = y + dy[d];
- x = x + dx[d];
- break;
- }
- }
- }
- if (i == 4) {
- if (y + dy[backDir(d)] >= 0 && y + dy[backDir(d)] < Y && x + dx[backDir(d)] >= 0 && x + dx[backDir(d)] < X) {
- if (map[y + dy[backDir(d)]][x + dx[backDir(d)]] == 1) {
- break;
- }
- else if (map[y + dy[backDir(d)]][x + dx[backDir(d)]] != 1) {
- y = y + dy[backDir(d)];
- x = x + dx[backDir(d)];
- }
- }
- }
- }
- printf("%d\n", ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement