Submission #328213

# Submission time Handle Problem Language Result Execution time Memory
328213 2020-11-15T19:44:27 Z anishrajeev Mecho (IOI09_mecho) Java 11
38 / 100
1000 ms 65536 KB
import java.io.*;
import java.util.*;

public class mecho {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        //BufferedReader bf = new BufferedReader(new FileReader("tester.in"));
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
        StringTokenizer stk = new StringTokenizer(bf.readLine());
        int N = Integer.parseInt(stk.nextToken());
        int S = Integer.parseInt(stk.nextToken());
        String[][] grid = new String[N][N];
        LinkedList<pair> list = new LinkedList<>();
        int[][] bees = new int[N][N];
        int startx = 0, starty = 0, homex = 0, homey = 0;
        for(int i = 0; i < N; i++){
            String line = bf.readLine();
            String[] str = line.split("");
            Arrays.fill(bees[i], Integer.MAX_VALUE);
            for(int c = 0; c < N; c++){
                grid[i][c] = str[c];
                if(grid[i][c].equals("H")){
                    list.add(new pair(i, c, 0));
                    bees[i][c] = 0;
                }
                if(grid[i][c].equals("M")){
                    startx = i;
                    starty = c;
                }
                if(grid[i][c].equals("D")){
                    homex = i;
                    homey = c;
                }
            }
        }
        int[] dx = new int[]{0, 1, 0, -1};
        int[] dy = new int[]{1, 0, -1, 0};
        boolean[][] visited = new boolean[N][N];
        while(!list.isEmpty()){
            pair p = list.pop();
            if(p.x == homex && p.y == homey)continue;
            if(grid[p.x][p.y].equals("T"))continue;
            bees[p.x][p.y] = Math.min(bees[p.x][p.y], p.t+S);
            if(visited[p.x][p.y])continue;
            visited[p.x][p.y] = true;
            for(int i = 0; i < 4; i++){
                int nx = p.x+dx[i];
                int ny = p.y+dy[i];
                if(N <= nx || nx < 0 || N <= ny || ny < 0)continue;
                list.add(new pair(nx, ny, bees[p.x][p.y]));
            }
        }
        bees[homex][homey] = Integer.MAX_VALUE;
        int start = 0, end = 10000000;
        while(start != end){
            int mid = (start+end+1)/2;
            if(verify(bees, grid, mid, startx, starty, homex, homey, N, S))start = mid;
            else end = mid-1;
        }
        System.out.println(start);
    }
    public static boolean verify(int[][] bees, String[][] grid, int time, int startx, int starty, int homex, int homey, int N, int S){
        Stack<pair> stack = new Stack<>();
        stack.push(new pair(startx, starty, time*S));
        int[] dx = new int[]{0, 1, 0, -1};
        int[] dy = new int[]{1, 0, -1, 0};
        int[][] visited = new int[N][N];
        for(int i = 0; i < N; i++)Arrays.fill(visited[i], -1);
        while(!stack.isEmpty()){
            pair p = stack.pop();
            if(p.t >= bees[p.x][p.y])continue;
            if(visited[p.x][p.y]!=-1 && p.t >= visited[p.x][p.y])continue;
            visited[p.x][p.y] = p.t;
            for(int i = 0; i < 4; i++){
                int nx = p.x+dx[i];
                int ny = p.y+dy[i];
                if(N <= nx || nx < 0 || N <= ny || ny < 0)continue;
                if(bees[nx][ny] <= p.t)continue;
                if(grid[nx][ny].equals("T")||grid[nx][ny].equals("H"))continue;
                if(bees[nx][ny] <= p.t+1)continue;
                stack.push(new pair(nx, ny, p.t+1));
            }
        }
        stack = null;
        dx = null;
        dy = null;
        return (visited[homex][homey] != -1);
    }
    public static class pair implements Comparable<pair>{
        int x, y, t;
        public pair(int a, int b, int c){
            x = a;
            y = b;
            t = c;
        }

        @Override
        public int compareTo(pair o) {
            if(x==o.x&&y==o.y)return Integer.compare(t, o.t);
            if(x==o.x)return Integer.compare(y, o.y);
            return Integer.compare(x, o.x);
        }
        public boolean equals(pair o){
            if(x == o.x && y == o.y && t == o.t)return true;
            return false;
        }
    }
}
# Verdict Execution time Memory Grader output
1 Correct 72 ms 8916 KB Output is correct
2 Correct 72 ms 8812 KB Output is correct
3 Correct 73 ms 8684 KB Output is correct
4 Correct 79 ms 8668 KB Output is correct
5 Correct 74 ms 8684 KB Output is correct
6 Correct 76 ms 8668 KB Output is correct
7 Runtime error 737 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
8 Incorrect 76 ms 8684 KB Output isn't correct
9 Correct 91 ms 8812 KB Output is correct
10 Correct 77 ms 8812 KB Output is correct
11 Correct 81 ms 8812 KB Output is correct
12 Correct 117 ms 9940 KB Output is correct
13 Correct 119 ms 9984 KB Output is correct
14 Incorrect 363 ms 15220 KB Output isn't correct
15 Correct 80 ms 8704 KB Output is correct
16 Correct 80 ms 8812 KB Output is correct
17 Correct 92 ms 9196 KB Output is correct
18 Correct 95 ms 9068 KB Output is correct
19 Correct 96 ms 9264 KB Output is correct
20 Correct 102 ms 9304 KB Output is correct
21 Correct 111 ms 9580 KB Output is correct
22 Correct 107 ms 9428 KB Output is correct
23 Correct 129 ms 9836 KB Output is correct
24 Correct 173 ms 13020 KB Output is correct
25 Correct 132 ms 10240 KB Output is correct
26 Correct 173 ms 13524 KB Output is correct
27 Correct 182 ms 13384 KB Output is correct
28 Correct 220 ms 13780 KB Output is correct
29 Correct 198 ms 14440 KB Output is correct
30 Correct 234 ms 14868 KB Output is correct
31 Correct 191 ms 14080 KB Output is correct
32 Correct 203 ms 14452 KB Output is correct
33 Correct 823 ms 25036 KB Output is correct
34 Correct 843 ms 25276 KB Output is correct
35 Execution timed out 1070 ms 27736 KB Time limit exceeded
36 Correct 663 ms 27584 KB Output is correct
37 Correct 770 ms 27716 KB Output is correct
38 Execution timed out 1096 ms 33704 KB Time limit exceeded
39 Correct 838 ms 33888 KB Output is correct
40 Correct 863 ms 33360 KB Output is correct
41 Execution timed out 1099 ms 40072 KB Time limit exceeded
42 Correct 914 ms 37348 KB Output is correct
43 Correct 902 ms 37628 KB Output is correct
44 Execution timed out 1089 ms 49004 KB Time limit exceeded
45 Correct 937 ms 40788 KB Output is correct
46 Correct 937 ms 40424 KB Output is correct
47 Execution timed out 1102 ms 54492 KB Time limit exceeded
48 Correct 940 ms 44628 KB Output is correct
49 Correct 928 ms 51028 KB Output is correct
50 Execution timed out 1088 ms 61024 KB Time limit exceeded
51 Execution timed out 1016 ms 54200 KB Time limit exceeded
52 Correct 922 ms 55172 KB Output is correct
53 Execution timed out 1086 ms 65536 KB Time limit exceeded
54 Execution timed out 1047 ms 60884 KB Time limit exceeded
55 Execution timed out 1041 ms 62264 KB Time limit exceeded
56 Execution timed out 1046 ms 65536 KB Time limit exceeded
57 Execution timed out 1065 ms 63984 KB Time limit exceeded
58 Execution timed out 1053 ms 63648 KB Time limit exceeded
59 Execution timed out 1012 ms 65536 KB Time limit exceeded
60 Runtime error 658 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
61 Runtime error 698 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
62 Runtime error 657 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
63 Runtime error 711 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
64 Runtime error 706 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
65 Runtime error 715 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
66 Runtime error 744 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
67 Runtime error 702 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
68 Runtime error 790 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
69 Runtime error 794 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
70 Runtime error 791 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
71 Runtime error 799 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
72 Runtime error 827 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
73 Runtime error 660 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
74 Runtime error 660 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
75 Runtime error 687 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
76 Runtime error 675 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
77 Runtime error 673 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
78 Runtime error 723 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
79 Runtime error 716 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
80 Runtime error 718 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
81 Runtime error 717 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
82 Runtime error 726 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
83 Runtime error 711 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
84 Runtime error 729 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
85 Runtime error 726 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
86 Runtime error 675 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
87 Runtime error 728 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
88 Runtime error 737 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
89 Runtime error 724 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
90 Runtime error 728 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
91 Runtime error 725 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
92 Runtime error 727 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)