답안 #558312

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
558312 2022-05-07T05:50:49 Z Cookie Mecho (IOI09_mecho) C++14
38 / 100
190 ms 7536 KB
#include <bits/stdc++.h>
using namespace std;
#define LIFESUCKS ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define ll long long
#define ld long double
#define ar array
#include<cstdio>
#define vt vector
#include<fstream>
ifstream fin("piggyback.in");
ofstream fout("piggyback.out");
#include<fstream>
#define pb push_back
#define all(c) (c).begin(), (c).end()

#define fi first
#define se second
#define vt vector
using namespace std;
int n, s, sti, stj, eni, enj;
bool vis[801][801];
int dis[801][801];
int dis2[801][801];
char a[801][801];
bool bee = true;
const int x[4] = {1, -1, 0, 0};
const int y[4] = {0, 0, 1, -1};
bool check(int mid){
    memset(vis, false, sizeof(vis));
    memset(dis2, false, sizeof(dis2));
    queue<pair<int, int>>q;
    q.push({sti, stj});
    vis[sti][stj] = true;
    dis2[sti][stj] = 0;
    while(!q.empty()){
        auto now = q.front(); q.pop();
        //cout << "mm";
        for(int i = 0; i < 4; i++){
            int cri = now.fi + x[i];
            int crj = now.se + y[i];
            if(cri < 0 || crj < 0 || cri >= n || crj >= n)continue;
            if(!vis[cri][crj] &&(a[cri][crj] == 'G' || a[cri][crj] == 'D')){
               // cout << "lol";
                if(dis[cri][crj] >= ceil((double)(dis2[now.fi][now.se] + 1) / (double)s) + mid){
                    vis[cri][crj] = true;
                    dis2[cri][crj] = dis2[now.fi][now.se] + 1;
                    if(a[cri][crj] == 'D')return(true);
                    q.push({cri, crj});
                }
            }
        }
    }
    //cout << "\n";
    return(false);
}
void bfs(){
    memset(vis, false, sizeof(vis));
    
    queue<pair<int, int>>q;
    
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if(a[i][j] == 'H'){
                q.push({i, j});
                vis[i][j] = true;
                dis[i][j] = 0;
            }
        }
    }
    while(!q.empty()){
        
        auto now = q.front(); q.pop();
        for(int i = 0; i < 4; i++){
            int cri = now.fi + x[i];
            int crj = now.se + y[i];
            if(cri < 0 || crj < 0 || cri >= n || crj >= n)continue;
            if(!vis[cri][crj] && (a[cri][crj] == 'G' || a[cri][crj] == 'M')){
                vis[cri][crj] = true;
                dis[cri][crj] = dis[now.fi][now.se] + 1;
                q.push({cri, crj});
            }
        }
    }
    
}
int main(){
    LIFESUCKS;
   cin >> n >> s;
   
   for(int i = 0; i < n; i++){
       for(int j = 0; j < n; j++){
           dis[i][j] = 1e9;
           cin >> a[i][j];
           if(a[i][j] == 'M'){
               sti = i, stj = j;
           }if(a[i][j] == 'D'){
               eni = i; enj = j;
           }
       }
   }
   //cout << sti << ' ' << stj << " ";
   bfs();
   
   int l = 0;
   int r = 64000;
   int ans = -1;
   while(l <= r){
       int mid = l + (r - l) / 2;
       if(check(mid)){
           ans = mid; l = mid + 1;
       }else{
           r = mid - 1;
       }
   }
   cout << ans;
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 3408 KB Output isn't correct
2 Incorrect 3 ms 3408 KB Output isn't correct
3 Incorrect 3 ms 3412 KB Output isn't correct
4 Incorrect 3 ms 3412 KB Output isn't correct
5 Correct 3 ms 3412 KB Output is correct
6 Correct 3 ms 3412 KB Output is correct
7 Correct 96 ms 7332 KB Output is correct
8 Incorrect 5 ms 3540 KB Output isn't correct
9 Correct 5 ms 3412 KB Output is correct
10 Correct 4 ms 3496 KB Output is correct
11 Correct 3 ms 3412 KB Output is correct
12 Incorrect 3 ms 3668 KB Output isn't correct
13 Incorrect 3 ms 3668 KB Output isn't correct
14 Correct 4 ms 3668 KB Output is correct
15 Incorrect 3 ms 3540 KB Output isn't correct
16 Correct 4 ms 3540 KB Output is correct
17 Incorrect 4 ms 3540 KB Output isn't correct
18 Correct 3 ms 3540 KB Output is correct
19 Incorrect 3 ms 3516 KB Output isn't correct
20 Correct 3 ms 3540 KB Output is correct
21 Incorrect 4 ms 3540 KB Output isn't correct
22 Correct 3 ms 3540 KB Output is correct
23 Incorrect 5 ms 3668 KB Output isn't correct
24 Correct 4 ms 3668 KB Output is correct
25 Incorrect 3 ms 3668 KB Output isn't correct
26 Correct 4 ms 3668 KB Output is correct
27 Incorrect 5 ms 3744 KB Output isn't correct
28 Correct 5 ms 3740 KB Output is correct
29 Incorrect 4 ms 3672 KB Output isn't correct
30 Correct 3 ms 3760 KB Output is correct
31 Incorrect 4 ms 3668 KB Output isn't correct
32 Correct 4 ms 3668 KB Output is correct
33 Incorrect 7 ms 4892 KB Output isn't correct
34 Correct 7 ms 4948 KB Output is correct
35 Correct 23 ms 4968 KB Output is correct
36 Incorrect 8 ms 5132 KB Output isn't correct
37 Correct 8 ms 5140 KB Output is correct
38 Correct 32 ms 5204 KB Output is correct
39 Incorrect 10 ms 5344 KB Output isn't correct
40 Correct 10 ms 5332 KB Output is correct
41 Correct 45 ms 5332 KB Output is correct
42 Incorrect 13 ms 5616 KB Output isn't correct
43 Correct 15 ms 5588 KB Output is correct
44 Correct 54 ms 5676 KB Output is correct
45 Incorrect 16 ms 5864 KB Output isn't correct
46 Incorrect 17 ms 5880 KB Output isn't correct
47 Correct 66 ms 5908 KB Output is correct
48 Incorrect 14 ms 6100 KB Output isn't correct
49 Incorrect 13 ms 6100 KB Output isn't correct
50 Correct 72 ms 6092 KB Output is correct
51 Incorrect 17 ms 6396 KB Output isn't correct
52 Incorrect 14 ms 6364 KB Output isn't correct
53 Correct 79 ms 6392 KB Output is correct
54 Incorrect 19 ms 6616 KB Output isn't correct
55 Incorrect 16 ms 6620 KB Output isn't correct
56 Correct 103 ms 6616 KB Output is correct
57 Incorrect 18 ms 6888 KB Output isn't correct
58 Incorrect 19 ms 6884 KB Output isn't correct
59 Correct 109 ms 6896 KB Output is correct
60 Incorrect 20 ms 7116 KB Output isn't correct
61 Incorrect 20 ms 7128 KB Output isn't correct
62 Correct 121 ms 7172 KB Output is correct
63 Correct 108 ms 7220 KB Output is correct
64 Correct 190 ms 7244 KB Output is correct
65 Correct 166 ms 7220 KB Output is correct
66 Incorrect 137 ms 7220 KB Output isn't correct
67 Correct 109 ms 7220 KB Output is correct
68 Correct 51 ms 7244 KB Output is correct
69 Correct 44 ms 7244 KB Output is correct
70 Correct 46 ms 7148 KB Output is correct
71 Correct 39 ms 7248 KB Output is correct
72 Incorrect 32 ms 7240 KB Output isn't correct
73 Incorrect 34 ms 7440 KB Output isn't correct
74 Correct 65 ms 7500 KB Output is correct
75 Correct 70 ms 7500 KB Output is correct
76 Correct 61 ms 7400 KB Output is correct
77 Correct 61 ms 7500 KB Output is correct
78 Correct 71 ms 7424 KB Output is correct
79 Correct 56 ms 7468 KB Output is correct
80 Correct 63 ms 7372 KB Output is correct
81 Correct 77 ms 7536 KB Output is correct
82 Correct 63 ms 7476 KB Output is correct
83 Correct 84 ms 7428 KB Output is correct
84 Correct 75 ms 7368 KB Output is correct
85 Correct 69 ms 7356 KB Output is correct
86 Correct 76 ms 7372 KB Output is correct
87 Correct 82 ms 7508 KB Output is correct
88 Correct 81 ms 7372 KB Output is correct
89 Correct 80 ms 7380 KB Output is correct
90 Correct 91 ms 7376 KB Output is correct
91 Correct 88 ms 7376 KB Output is correct
92 Correct 81 ms 7392 KB Output is correct