# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
372692 | 2021-03-01T09:59:43 Z | hoanghq2004 | 산악 구조대 (JOI13_mountain) | C++14 | 9 ms | 2540 KB |
#include <bits/stdc++.h> #include "grader.h" using namespace std; void Rescue(int n, int m, int RS, int CS, int X) { map <int, vector <pair <int, int> > > mp; vector <pair <int, int> > block[(n + 10) * (m + 10)]; vector <vector <int> > height(n + 10, vector <int> (m + 10, -1)); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { mp[abs(i - RS) + abs(j - CS)].push_back({i, j}); } } int sz = 0; for (auto [id, vcell]: mp) block[sz++] = vcell; auto ask = [&](int i, int j) { if (height[i][j] != -1) return height[i][j]; height[i][j] = Measure(i, j); if (height[i][j] == X) Pinpoint(i, j); return height[i][j]; }; int L = 0, R = sz - 1; while (R - L > 1) { int mid = L + R >> 1; if (ask(block[mid].front().first, block[mid].front().second) < X) L = mid; else R = mid; } for (auto [i, j]: block[L]) ask(i, j); for (auto [i, j]: block[R]) ask(i, j); }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Incorrect | 1 ms | 364 KB | Wrong Answer [5] |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 9 ms | 2540 KB | Wrong Answer [5] |
2 | Halted | 0 ms | 0 KB | - |