Submission #697007

# Submission time Handle Problem Language Result Execution time Memory
697007 2023-02-07T21:57:11 Z andreid Tracks in the Snow (BOI13_tracks) Java 11
89.0625 / 100
2000 ms 521696 KB
import java.util.*;
import java.io.*;

public class tracks {
    static final int[] dx = {0, 0, -1, 1};
    static final int[] dy = {-1, 1, 0, 0};
    static int N = 1, H, W;
    static int[][] grid, count;
    public static void main(String[] args) {
        FastIO io = new FastIO();

        H = io.nextInt();
        W = io.nextInt();
        grid = new int[H][W];

        for (int i = 0; i < H; i++) {
            String line = io.next();
            for (int j = 0; j < W; j++) {
                grid[i][j] = (line.charAt(j) == 'F')?1:(line.charAt(j) == 'R')?2:-1;
            }
        }

        io.println(bfs());
        io.close();
    }

    private static int bfs() {
        count = new int[H][W];

        LinkedList<int[]> q = new LinkedList<>();
        q.add(new int[]{0,0});
        count[0][0] = 1;

        while (!q.isEmpty()) {
            int[] curr = q.poll();

            N = Math.max(N, count[curr[0]][curr[1]]);

            for (int i = 0; i < 4; i++) {
                int nx = curr[0] + dx[i];
                int ny = curr[1] + dy[i];

                if(nx < 0 || ny < 0 || nx >= H || ny >= W) continue;
                if(count[nx][ny] > 0) continue;
                if(grid[nx][ny] == -1) continue;
                if(grid[nx][ny] != grid[curr[0]][curr[1]]) {
                    count[nx][ny] = count[curr[0]][curr[1]] + 1;
                    q.addLast(new int[]{nx, ny});
                }
                else {
                    count[nx][ny] = count[curr[0]][curr[1]];
                    q.addFirst(new int[]{nx, ny});
                }
            }
        }

        return N;
    }

    //BeginCodeSnip{FastIO}
    private static class FastIO extends PrintWriter {
        private InputStream stream;
        private byte[] buf = new byte[1<<16];
        private int curChar, numChars;

        // standard input
        public FastIO() { this(System.in,System.out); }
        public FastIO(InputStream i, OutputStream o) {
            super(o);
            stream = i;
        }
        // file input
        public FastIO(String i, String o) throws IOException {
            super(new FileWriter(o));
            stream = new FileInputStream(i);
        }

        // throws InputMismatchException() if previously detected end of file
        private int nextByte() {
            if (numChars == -1) throw new InputMismatchException();
            if (curChar >= numChars) {
                curChar = 0;
                try {
                    numChars = stream.read(buf);
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (numChars == -1) return -1; // end of file
            }
            return buf[curChar++];
        }

        // to read in entire lines, replace c <= ' '
        // with a function that checks whether c is a line break
        public String next() {
            int c; do { c = nextByte(); } while (c <= ' ');
            StringBuilder res = new StringBuilder();
            do { res.appendCodePoint(c); c = nextByte(); } while (c > ' ');
            return res.toString();
        }
        public int nextInt() { // nextLong() would be implemented similarly
            int c; do { c = nextByte(); } while (c <= ' ');
            int sgn = 1; if (c == '-') { sgn = -1; c = nextByte(); }
            int res = 0;
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res = 10*res+c-'0';
                c = nextByte();
            } while (c > ' ');
            return res * sgn;
        }
        public double nextDouble() { return Double.parseDouble(next()); }
    }
    //EndCodeSnip
}
# Verdict Execution time Memory Grader output
1 Correct 192 ms 15252 KB Output is correct
2 Correct 64 ms 8416 KB Output is correct
3 Correct 65 ms 8540 KB Output is correct
4 Correct 272 ms 15520 KB Output is correct
5 Correct 154 ms 13232 KB Output is correct
6 Correct 60 ms 8172 KB Output is correct
7 Correct 74 ms 8672 KB Output is correct
8 Correct 94 ms 10324 KB Output is correct
9 Correct 91 ms 8912 KB Output is correct
10 Correct 159 ms 13056 KB Output is correct
11 Correct 158 ms 13016 KB Output is correct
12 Correct 166 ms 13488 KB Output is correct
13 Correct 155 ms 13048 KB Output is correct
14 Correct 157 ms 13088 KB Output is correct
15 Correct 174 ms 14992 KB Output is correct
16 Correct 196 ms 15096 KB Output is correct
17 Correct 182 ms 14880 KB Output is correct
18 Correct 211 ms 15532 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 157 ms 12688 KB Output is correct
2 Correct 266 ms 31852 KB Output is correct
3 Correct 742 ms 237696 KB Output is correct
4 Correct 374 ms 61900 KB Output is correct
5 Correct 538 ms 130316 KB Output is correct
6 Execution timed out 2056 ms 389592 KB Time limit exceeded
7 Correct 136 ms 12768 KB Output is correct
8 Correct 165 ms 12784 KB Output is correct
9 Correct 151 ms 12664 KB Output is correct
10 Correct 134 ms 11124 KB Output is correct
11 Correct 135 ms 11612 KB Output is correct
12 Correct 126 ms 10608 KB Output is correct
13 Correct 281 ms 31864 KB Output is correct
14 Correct 195 ms 23600 KB Output is correct
15 Correct 200 ms 24428 KB Output is correct
16 Correct 216 ms 19712 KB Output is correct
17 Correct 400 ms 66464 KB Output is correct
18 Correct 348 ms 65940 KB Output is correct
19 Correct 330 ms 62080 KB Output is correct
20 Correct 318 ms 59692 KB Output is correct
21 Correct 507 ms 132048 KB Output is correct
22 Correct 542 ms 130420 KB Output is correct
23 Correct 611 ms 121192 KB Output is correct
24 Correct 548 ms 130424 KB Output is correct
25 Correct 1004 ms 237700 KB Output is correct
26 Execution timed out 2069 ms 521696 KB Time limit exceeded
27 Execution timed out 2063 ms 433164 KB Time limit exceeded
28 Execution timed out 2083 ms 389488 KB Time limit exceeded
29 Correct 1978 ms 379640 KB Output is correct
30 Execution timed out 2015 ms 399320 KB Time limit exceeded
31 Correct 1110 ms 159152 KB Output is correct
32 Correct 1638 ms 348784 KB Output is correct