Submission #3222528


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[r];

            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 WA
Exec Time 221 ms
Memory 123040 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 700
Status
AC × 3
AC × 42
WA × 4
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 140 ms 25572 KB
in10.txt AC 146 ms 29044 KB
in11.txt AC 147 ms 29228 KB
in12.txt AC 154 ms 28448 KB
in13.txt AC 138 ms 27960 KB
in14.txt AC 148 ms 30052 KB
in15.txt AC 148 ms 28632 KB
in16.txt AC 151 ms 27340 KB
in17.txt AC 144 ms 27204 KB
in18.txt AC 137 ms 27684 KB
in19.txt AC 146 ms 28276 KB
in2.txt AC 145 ms 26196 KB
in20.txt AC 75 ms 21588 KB
in21.txt AC 74 ms 17364 KB
in22.txt AC 73 ms 18132 KB
in23.txt AC 152 ms 26100 KB
in24.txt AC 149 ms 25680 KB
in25.txt AC 136 ms 29092 KB
in26.txt WA 153 ms 29084 KB
in27.txt AC 146 ms 26592 KB
in28.txt WA 155 ms 29352 KB
in29.txt AC 143 ms 26708 KB
in3.txt AC 149 ms 28128 KB
in30.txt WA 136 ms 25592 KB
in31.txt AC 152 ms 28572 KB
in32.txt AC 136 ms 27040 KB
in33.txt AC 221 ms 123040 KB
in34.txt AC 211 ms 45296 KB
in35.txt AC 147 ms 26276 KB
in36.txt AC 144 ms 27852 KB
in37.txt AC 146 ms 30584 KB
in38.txt AC 146 ms 28708 KB
in39.txt WA 150 ms 25376 KB
in4.txt AC 135 ms 25380 KB
in40.txt AC 145 ms 26996 KB
in5.txt AC 145 ms 28372 KB
in6.txt AC 149 ms 28916 KB
in7.txt AC 136 ms 27860 KB
in8.txt AC 136 ms 26276 KB
in9.txt AC 149 ms 29944 KB
sample1.txt AC 72 ms 17236 KB
sample2.txt AC 71 ms 19924 KB
sample3.txt AC 72 ms 20692 KB