Submission #1302612

#TimeUsernameProblemLanguageResultExecution timeMemory
1302612lunarechoObstacles for a Llama (IOI25_obstacles)C++20
0 / 100
2116 ms533792 KiB
#include "obstacles.h"
#include <bits/stdc++.h>
using namespace std;
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
vector<int> t, h;
map<pair<int, int>, bool> reach;
bool isveg(int x, int y) {
  return x >= 0 && x < t.size() && y >= 0 && y < h.size() &&
         t[x] > h[y];
}
void initialize(std::vector<int> T, std::vector<int> H) {
  t = T;
  h = H;
  for(int i=0;i<h.size();++i) {
    if(isveg(0, i)) {
      queue<pair<int, int>> q;
      map<pair<int, int>, bool> vis;
      vis[{0, i}] = true;
      q.push({0, i});
      while(!q.empty()) {
        auto f = q.front();
        q.pop();
        if(f.first == 0) {
          reach[{i, f.second}] = true;
        }
        for(int j=0;j<4;++j) {
          int nx = f.first + dx[j], ny = f.second + dy[j];
          if(isveg(nx, ny) && !vis[{nx, ny}]) {
            q.push({nx, ny});
            vis[{nx, ny}] = true;
          }
        } 
      }
    }
  }
  return;
}

bool can_reach(int L, int R, int S, int D) {
  return reach[{S,D}];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...