답안 #1038625

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1038625 2024-07-30T03:45:17 Z Tepeyac Mecho (IOI09_mecho) C++11
10 / 100
186 ms 65536 KB
#include <bits/stdc++.h>

using namespace std;

struct Cell 
{
    int x, y;
};

int n, s;
pair<int, int> pos;
char ma[801][801];
int enj[801][801];
bool vb[801][801];
int pa[801][801];

int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};

bool isvalid(int i, int j) 
{
    return i >= 1 && i <= n && j >= 1 && j <= n; 
}

bool monotone(int m) 
{
    queue<Cell> q;

    memset(pa, 0, sizeof(pa));
    memset(vb, false, sizeof(vb));

   Cell nodo = {pos.first, pos.second};
   q.push(nodo);
   pa[nodo.x][nodo.y] = m;
   vb[pos.first][pos.second] = true;

    while(!q.empty()) 
    {
        Cell Nodo = q.front();
        q.pop();

        for(int i = 0; i < 4; ++i) 
        {
            for(int j = 1; j <= s; ++j) 
            {
                int nx = Nodo.x + j * dx[i];
                int ny = Nodo.y + j * dy[i];

                if(!isvalid(nx, ny) || ma[nx][ny] == 'H' || ma[nx][ny] == 'T' && pa[nx][ny] + 1 >= enj[nx][ny] && vb[nx][ny]) 
                    break;

                    if(ma[nx][ny] == 'D') 
                    {
                        return true;
                    }

                    vb[nx][ny] = true;
                    pa[nx][ny] = pa[Nodo.x][Nodo.y] + 1;
                    q.push({nx, ny});
                
            }
        }
    }

    return false;
}

int BSOTA(int a, int b) 
{
    while(a + 1 < b) 
    {
        int m = (a + b) / 2;
        if(monotone(m)) 
        {
            a = m;
        } else 
        {
            b = m;
        }
    }
    return a;
}

int main() 
{
    cin.tie(0) -> sync_with_stdio(0);

    cin >> n >> s;

    
    queue<pair<int, int>> q;

    for(int i = 1; i <= n; ++i) 
    {
        for(int j = 1; j <= n; ++j) 
        {
            cin >> ma[i][j];
            if(ma[i][j] == 'H') 
            {
                q.push({i, j});
                enj[i][j] = 0;
            } 
            else 
            {
                enj[i][j] = -1;
            }
            if(ma[i][j] == 'M') 
            {
                pos = {i, j};
            }
        }
    }

    while(!q.empty()) 
    {
        int i2 = q.front().first, j2 = q.front().second;
        q.pop();

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

            if(isvalid(nx, ny) && ma[nx][ny] != 'D' && ma[nx][ny] != 'T' && ma[nx][ny] != 'H' && enj[nx][ny] == -1) 
            {
                q.push({nx, ny});
                enj[nx][ny] = enj[i2][j2] + 1;
            }
        }
    }

    int maxx = enj[pos.first][pos.second];
   
        cout << BSOTA(0, maxx - 1) - 1 << "\n";
    
    return 0;
}

Compilation message

mecho.cpp: In function 'bool monotone(int)':
mecho.cpp:49:112: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   49 |                 if(!isvalid(nx, ny) || ma[nx][ny] == 'H' || ma[nx][ny] == 'T' && pa[nx][ny] + 1 >= enj[nx][ny] && vb[nx][ny])
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
mecho.cpp:49:17: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   49 |                 if(!isvalid(nx, ny) || ma[nx][ny] == 'H' || ma[nx][ny] == 'T' && pa[nx][ny] + 1 >= enj[nx][ny] && vb[nx][ny])
      |                 ^~
mecho.cpp:52:21: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   52 |                     if(ma[nx][ny] == 'D')
      |                     ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4700 KB Output is correct
2 Incorrect 1 ms 4700 KB Output isn't correct
3 Incorrect 1 ms 4560 KB Output isn't correct
4 Incorrect 2 ms 4700 KB Output isn't correct
5 Incorrect 0 ms 2396 KB Output isn't correct
6 Incorrect 2 ms 4700 KB Output isn't correct
7 Runtime error 72 ms 65536 KB Execution killed with signal 9
8 Runtime error 81 ms 65536 KB Execution killed with signal 9
9 Incorrect 1 ms 4700 KB Output isn't correct
10 Incorrect 6 ms 6464 KB Output isn't correct
11 Correct 2 ms 4700 KB Output is correct
12 Incorrect 2 ms 4700 KB Output isn't correct
13 Incorrect 0 ms 2396 KB Output isn't correct
14 Runtime error 75 ms 65536 KB Execution killed with signal 9
15 Correct 1 ms 4952 KB Output is correct
16 Incorrect 2 ms 4700 KB Output isn't correct
17 Correct 2 ms 4716 KB Output is correct
18 Incorrect 1 ms 4700 KB Output isn't correct
19 Correct 1 ms 4700 KB Output is correct
20 Incorrect 1 ms 4700 KB Output isn't correct
21 Correct 2 ms 4700 KB Output is correct
22 Incorrect 1 ms 4700 KB Output isn't correct
23 Correct 1 ms 4568 KB Output is correct
24 Incorrect 2 ms 4700 KB Output isn't correct
25 Correct 1 ms 4696 KB Output is correct
26 Incorrect 2 ms 4696 KB Output isn't correct
27 Correct 2 ms 4696 KB Output is correct
28 Incorrect 2 ms 4700 KB Output isn't correct
29 Correct 2 ms 4700 KB Output is correct
30 Incorrect 2 ms 4700 KB Output isn't correct
31 Correct 2 ms 4696 KB Output is correct
32 Incorrect 2 ms 4700 KB Output isn't correct
33 Correct 4 ms 4956 KB Output is correct
34 Incorrect 11 ms 5780 KB Output isn't correct
35 Runtime error 63 ms 65536 KB Execution killed with signal 9
36 Correct 4 ms 5224 KB Output is correct
37 Incorrect 16 ms 6220 KB Output isn't correct
38 Runtime error 61 ms 65536 KB Execution killed with signal 9
39 Correct 5 ms 5464 KB Output is correct
40 Incorrect 18 ms 6672 KB Output isn't correct
41 Runtime error 63 ms 65536 KB Execution killed with signal 9
42 Correct 7 ms 5720 KB Output is correct
43 Incorrect 24 ms 7108 KB Output isn't correct
44 Runtime error 62 ms 65536 KB Execution killed with signal 9
45 Correct 7 ms 6064 KB Output is correct
46 Incorrect 27 ms 7660 KB Output isn't correct
47 Runtime error 71 ms 65536 KB Execution killed with signal 9
48 Correct 8 ms 6236 KB Output is correct
49 Incorrect 32 ms 8172 KB Output isn't correct
50 Runtime error 65 ms 65536 KB Execution killed with signal 9
51 Correct 9 ms 6492 KB Output is correct
52 Incorrect 43 ms 8736 KB Output isn't correct
53 Runtime error 64 ms 65536 KB Execution killed with signal 9
54 Correct 11 ms 6744 KB Output is correct
55 Incorrect 43 ms 9380 KB Output isn't correct
56 Runtime error 65 ms 65536 KB Execution killed with signal 9
57 Correct 17 ms 7004 KB Output is correct
58 Incorrect 56 ms 9968 KB Output isn't correct
59 Runtime error 69 ms 65536 KB Execution killed with signal 9
60 Correct 13 ms 7000 KB Output is correct
61 Incorrect 59 ms 10628 KB Output isn't correct
62 Runtime error 72 ms 65536 KB Execution killed with signal 9
63 Runtime error 114 ms 65536 KB Execution killed with signal 9
64 Incorrect 102 ms 12420 KB Output isn't correct
65 Runtime error 104 ms 65536 KB Execution killed with signal 9
66 Runtime error 110 ms 65536 KB Execution killed with signal 9
67 Runtime error 114 ms 65536 KB Execution killed with signal 9
68 Incorrect 186 ms 18652 KB Output isn't correct
69 Incorrect 30 ms 8032 KB Output isn't correct
70 Runtime error 100 ms 65536 KB Execution killed with signal 9
71 Runtime error 101 ms 65536 KB Execution killed with signal 9
72 Incorrect 36 ms 8396 KB Output isn't correct
73 Incorrect 16 ms 5208 KB Output isn't correct
74 Runtime error 73 ms 65536 KB Execution killed with signal 9
75 Runtime error 78 ms 65536 KB Execution killed with signal 9
76 Runtime error 75 ms 65536 KB Execution killed with signal 9
77 Runtime error 74 ms 65536 KB Execution killed with signal 9
78 Runtime error 81 ms 65536 KB Execution killed with signal 9
79 Runtime error 75 ms 65536 KB Execution killed with signal 9
80 Runtime error 98 ms 65536 KB Execution killed with signal 9
81 Runtime error 86 ms 65536 KB Execution killed with signal 9
82 Runtime error 76 ms 65536 KB Execution killed with signal 9
83 Runtime error 77 ms 65536 KB Execution killed with signal 9
84 Runtime error 77 ms 65536 KB Execution killed with signal 9
85 Runtime error 76 ms 65536 KB Execution killed with signal 9
86 Runtime error 75 ms 65536 KB Execution killed with signal 9
87 Runtime error 90 ms 65536 KB Execution killed with signal 9
88 Runtime error 80 ms 65536 KB Execution killed with signal 9
89 Runtime error 83 ms 65536 KB Execution killed with signal 9
90 Runtime error 76 ms 65536 KB Execution killed with signal 9
91 Runtime error 82 ms 65536 KB Execution killed with signal 9
92 Runtime error 75 ms 65536 KB Execution killed with signal 9