Submission #583411

# Submission time Handle Problem Language Result Execution time Memory
583411 2022-06-25T10:34:36 Z HeyYouNotYouYou Mecho (IOI09_mecho) C++14
30 / 100
719 ms 21140 KB
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 801,INF=1e12;
int n , o, srcx, srcy, destx, desty, ar[N][N];
int dx[4]={0,-1,1,0};
int dy[4]={-1,0,0,1};
struct node{
  int x, y, dist;
};
bool valid1(int x, int y){
  if(x>=0 && x<n && y>=0 && y<n && (x!=srcx || y!=srcy) && (x!=destx || y!=desty)) return true;
  return false;
}
bool valid(int x, int y){
  if(x>=0 && x<n && y>=0 && y<n) return true;
  return false;
}
bool check(int mins)
{
  vector<pair<int,int>>hives;
  int arr[n][n],arr2[n][n];
  for(int i = 0 ; i < n ; i ++)
    for(int j = 0 ; j < n ; j ++)
      {
        arr[i][j]=ar[i][j]; arr2[i][j]=1;
        if(arr[i][j]==1) hives.push_back({i,j});
      }
  queue<pair<int,int>>q;
  int vis[n][n];
  memset(vis,0,sizeof vis);
  for(auto e : hives){
    q.push({e.first,e.second});
    vis[e.first][e.second]=1;
  }

  while(!q.empty())
  {
    int curx=q.front().first;
    int cury=q.front().second;
    q.pop();
    for(int i = 0 ; i < 4; i ++)
    {
      int gox = curx+dx[i], goy = cury+dy[i];
      if(valid(gox,goy) && !vis[gox][goy] && !arr[gox][goy]){
        vis[gox][goy]=1;
        arr[gox][goy]=arr[curx][cury]+1;
        q.push({gox,goy});
      }
    }
  }

 queue<pair<pair<int,int>,int>>qq;
  memset(vis,0,sizeof vis);
  qq.push({{srcx,srcy},0});
  vis[srcx][srcy]=1;
  if(arr[srcx][srcy]<=mins) return false;
  arr2[srcx][srcy]=1;
  while(!qq.empty()){
    int curx=qq.front().first.first;
    int cury=qq.front().first.second;
    int c = qq.front().second;
    if(curx==destx&&cury==desty) return true;
    qq.pop();
    for(int i = 0 ; i < 4; i ++)
    {
      int gox = curx+dx[i], goy = cury+dy[i];

      if(valid(gox,goy) && !vis[gox][goy] && arr[gox][goy]!=-1){
        if(mins+arr2[curx][cury]+(c%o==0&&c>0) < arr[gox][goy]){
          vis[gox][goy]=1;
          arr2[gox][goy]=arr2[curx][cury]+(c%o==0&&c>0);
          qq.push({{gox,goy},c+1});
        }
      }
    }
  }


  return false;
}
int32_t main()
{
  //freopen("abc.in", "r", stdin);
  cin >> n >> o;
  for(int i = 0 ; i < n ; i ++){
    for(int j = 0 ; j < n ; j ++){
      char x; cin >> x;
      ar[i][j] = (x=='H'?1:((x=='G'||x=='D'||x=='M')?0:-1));
      if(x=='M') srcx=i, srcy=j;
      if(x=='D') destx=i, desty=j;
    }
  }
  int l = 0 , r = n*n;
  int ans=-1;
  while(l <= r)
  {
    int mid = (l+r)/2;
    if(check(mid))
    {
      l = mid+1;
      ans=mid;
    }
    else
    {
      r = mid-1;
    }
  }
  cout<<ans<<endl;
}
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Incorrect 0 ms 212 KB Output isn't correct
4 Incorrect 1 ms 212 KB Output isn't correct
5 Correct 1 ms 340 KB Output is correct
6 Incorrect 0 ms 340 KB Output isn't correct
7 Incorrect 557 ms 20808 KB Output isn't correct
8 Incorrect 1 ms 340 KB Output isn't correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 0 ms 340 KB Output is correct
12 Incorrect 2 ms 596 KB Output isn't correct
13 Incorrect 2 ms 596 KB Output isn't correct
14 Correct 2 ms 596 KB Output is correct
15 Incorrect 1 ms 340 KB Output isn't correct
16 Correct 1 ms 340 KB Output is correct
17 Incorrect 1 ms 340 KB Output isn't correct
18 Correct 1 ms 340 KB Output is correct
19 Incorrect 1 ms 340 KB Output isn't correct
20 Correct 1 ms 340 KB Output is correct
21 Incorrect 1 ms 468 KB Output isn't correct
22 Correct 1 ms 468 KB Output is correct
23 Incorrect 1 ms 468 KB Output isn't correct
24 Correct 1 ms 468 KB Output is correct
25 Incorrect 1 ms 596 KB Output isn't correct
26 Correct 1 ms 596 KB Output is correct
27 Incorrect 2 ms 596 KB Output isn't correct
28 Correct 2 ms 596 KB Output is correct
29 Incorrect 2 ms 724 KB Output isn't correct
30 Correct 2 ms 724 KB Output is correct
31 Incorrect 3 ms 724 KB Output isn't correct
32 Correct 2 ms 724 KB Output is correct
33 Incorrect 43 ms 5332 KB Output isn't correct
34 Correct 38 ms 5348 KB Output is correct
35 Correct 70 ms 5376 KB Output is correct
36 Incorrect 52 ms 6548 KB Output isn't correct
37 Correct 51 ms 6564 KB Output is correct
38 Correct 106 ms 6568 KB Output is correct
39 Incorrect 73 ms 7884 KB Output isn't correct
40 Correct 72 ms 7780 KB Output is correct
41 Correct 119 ms 7880 KB Output is correct
42 Incorrect 81 ms 9304 KB Output isn't correct
43 Correct 82 ms 9300 KB Output is correct
44 Correct 203 ms 9320 KB Output is correct
45 Incorrect 111 ms 10836 KB Output isn't correct
46 Correct 119 ms 10836 KB Output is correct
47 Correct 222 ms 10844 KB Output is correct
48 Incorrect 162 ms 12496 KB Output isn't correct
49 Correct 132 ms 12400 KB Output is correct
50 Correct 257 ms 12524 KB Output is correct
51 Incorrect 155 ms 14264 KB Output isn't correct
52 Correct 163 ms 14276 KB Output is correct
53 Correct 335 ms 14316 KB Output is correct
54 Incorrect 197 ms 16300 KB Output isn't correct
55 Correct 186 ms 16160 KB Output is correct
56 Correct 407 ms 16208 KB Output is correct
57 Incorrect 206 ms 18188 KB Output isn't correct
58 Correct 221 ms 18260 KB Output is correct
59 Correct 509 ms 18216 KB Output is correct
60 Incorrect 277 ms 20320 KB Output isn't correct
61 Correct 233 ms 20324 KB Output is correct
62 Correct 551 ms 20356 KB Output is correct
63 Correct 564 ms 20428 KB Output is correct
64 Correct 672 ms 20352 KB Output is correct
65 Correct 560 ms 20416 KB Output is correct
66 Incorrect 588 ms 20284 KB Output isn't correct
67 Correct 545 ms 20480 KB Output is correct
68 Correct 565 ms 20428 KB Output is correct
69 Correct 601 ms 20516 KB Output is correct
70 Correct 604 ms 20376 KB Output is correct
71 Correct 625 ms 20440 KB Output is correct
72 Incorrect 570 ms 20400 KB Output isn't correct
73 Incorrect 604 ms 21064 KB Output isn't correct
74 Correct 719 ms 21140 KB Output is correct
75 Correct 675 ms 20960 KB Output is correct
76 Correct 595 ms 21064 KB Output is correct
77 Correct 665 ms 21044 KB Output is correct
78 Correct 578 ms 20864 KB Output is correct
79 Correct 492 ms 21000 KB Output is correct
80 Correct 600 ms 20872 KB Output is correct
81 Correct 500 ms 20920 KB Output is correct
82 Correct 523 ms 21000 KB Output is correct
83 Correct 523 ms 20772 KB Output is correct
84 Correct 519 ms 20812 KB Output is correct
85 Correct 568 ms 20792 KB Output is correct
86 Correct 569 ms 20792 KB Output is correct
87 Correct 535 ms 20796 KB Output is correct
88 Correct 508 ms 20800 KB Output is correct
89 Correct 560 ms 20784 KB Output is correct
90 Correct 543 ms 20804 KB Output is correct
91 Correct 508 ms 20676 KB Output is correct
92 Correct 575 ms 20772 KB Output is correct