Submission #3222518


Source Code Expand

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author prakharjain
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        OutputWriter out = new OutputWriter(outputStream);
        agc014c solver = new agc014c();
        solver.solve(1, in, out);
        out.close();
    }

    static class agc014c {
        boolean[][] vis;
        int inf = 100000;
        int r;
        int c;

        public void solve(int testNumber, InputReader in, OutputWriter out) {
            r = in.nextInt();
            c = in.nextInt();
            int k = in.nextInt();

            String[] a = new String[c];

            int si = -1;
            int sj = -1;
            for (int i = 0; i < r; i++) {
                a[i] = in.next();
                for (int j = 0; j < c; j++) {
                    if (a[i].charAt(j) == 'S') {
                        si = i;
                        sj = j;
                    }
                }
            }

            vis = new boolean[r][c];

            dfs(si, sj, a, k);

            int ans = inf;

            for (int i = 0; i < r; i++) {
                for (int j = 0; j < c; j++) {
                    if (vis[i][j]) {
                        int mind = inf;

                        mind = Math.min(mind, i);
                        mind = Math.min(mind, j);
                        mind = Math.min(mind, c - 1 - j);
                        mind = Math.min(mind, r - 1 - i);

                        int ca = (mind + k - 1) / k;

                        ans = Math.min(ans, 1 + ca);
                    }
                }
            }

            out.println(ans);
        }

        void dfs(int ri, int ci, String[] a, int cd) {
            if (vis[ri][ci])
                return;

            if (a[ri].charAt(ci) == '#')
                return;

            vis[ri][ci] = true;

            if (cd == 0)
                return;

            if (ri > 0)
                dfs(ri - 1, ci, a, cd - 1);
            if (ci > 0)
                dfs(ri, ci - 1, a, cd - 1);
            if (ci < c - 1)
                dfs(ri, ci + 1, a, cd - 1);
            if (ri < r - 1)
                dfs(ri + 1, ci, a, cd - 1);
        }

    }

    static class OutputWriter {
        private final PrintWriter writer;

        public OutputWriter(OutputStream outputStream) {
            writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
        }

        public OutputWriter(Writer writer) {
            this.writer = new PrintWriter(writer);
        }

        public void close() {
            writer.close();
        }

        public void println(int i) {
            writer.println(i);
        }

    }

    static class InputReader {
        private InputStream stream;
        private byte[] buf = new byte[1024];
        private int curChar;
        private int numChars;
        private InputReader.SpaceCharFilter filter;

        public InputReader(InputStream stream) {
            this.stream = stream;
        }

        public static boolean isWhitespace(int c) {
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }

        public int read() {
            if (numChars == -1) {
                throw new InputMismatchException();
            }
            if (curChar >= numChars) {
                curChar = 0;
                try {
                    numChars = stream.read(buf);
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (numChars <= 0) {
                    return -1;
                }
            }
            return buf[curChar++];
        }

        public int nextInt() {
            int c = read();
            while (isSpaceChar(c)) {
                c = read();
            }
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            int res = 0;
            do {
                if (c < '0' || c > '9') {
                    throw new InputMismatchException();
                }
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        public String nextString() {
            int c = read();
            while (isSpaceChar(c)) {
                c = read();
            }
            StringBuilder res = new StringBuilder();
            do {
                if (Character.isValidCodePoint(c)) {
                    res.appendCodePoint(c);
                }
                c = read();
            } while (!isSpaceChar(c));
            return res.toString();
        }

        public boolean isSpaceChar(int c) {
            if (filter != null) {
                return filter.isSpaceChar(c);
            }
            return isWhitespace(c);
        }

        public String next() {
            return nextString();
        }

        public interface SpaceCharFilter {
            public boolean isSpaceChar(int ch);

        }

    }
}

Submission Info

Submission Time
Task C - Closed Rooms
User leashptntl
Language Java8 (OpenJDK 1.8.0)
Score 0
Code Size 5806 Byte
Status RE
Exec Time 220 ms
Memory 125236 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 700
Status
AC × 3
AC × 41
WA × 4
RE × 1
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in4.txt, in40.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
in1.txt AC 145 ms 29048 KB
in10.txt AC 142 ms 27484 KB
in11.txt AC 136 ms 28768 KB
in12.txt AC 149 ms 28280 KB
in13.txt AC 139 ms 26712 KB
in14.txt AC 136 ms 27224 KB
in15.txt AC 136 ms 27892 KB
in16.txt AC 143 ms 26616 KB
in17.txt AC 135 ms 26744 KB
in18.txt AC 136 ms 24352 KB
in19.txt AC 134 ms 25636 KB
in2.txt AC 136 ms 29348 KB
in20.txt RE 75 ms 21460 KB
in21.txt AC 71 ms 17620 KB
in22.txt AC 72 ms 20820 KB
in23.txt AC 140 ms 27744 KB
in24.txt AC 147 ms 27596 KB
in25.txt AC 136 ms 27040 KB
in26.txt WA 145 ms 28912 KB
in27.txt AC 134 ms 29264 KB
in28.txt WA 151 ms 29532 KB
in29.txt AC 155 ms 28576 KB
in3.txt AC 148 ms 28360 KB
in30.txt WA 147 ms 25812 KB
in31.txt AC 145 ms 26616 KB
in32.txt AC 136 ms 27212 KB
in33.txt AC 220 ms 125236 KB
in34.txt AC 206 ms 45648 KB
in35.txt AC 146 ms 30580 KB
in36.txt AC 147 ms 29268 KB
in37.txt AC 146 ms 29300 KB
in38.txt AC 146 ms 27744 KB
in39.txt WA 150 ms 29008 KB
in4.txt AC 146 ms 27588 KB
in40.txt AC 145 ms 27488 KB
in5.txt AC 140 ms 28832 KB
in6.txt AC 149 ms 28964 KB
in7.txt AC 144 ms 27252 KB
in8.txt AC 135 ms 26192 KB
in9.txt AC 138 ms 28244 KB
sample1.txt AC 71 ms 23380 KB
sample2.txt AC 70 ms 22868 KB
sample3.txt AC 71 ms 20564 KB