# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1061871 | RecursiveCo | Sky Walking (IOI19_walk) | C++17 | 3450 ms | 320060 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "walk.h"
using namespace std;
long long min_distance(vector<int> x, vector<int> h, vector<int> l, vector<int> r, vector<int> y, int s, int g) {
int n = x.size(); // = h.size()
int m = l.size(); // = r.size() = y.size()
// s and g can be anything, but n and m are small anyway so it doesn't matter.
// or I suppose also with small numbers of intersections.
vector<pair<int, int>> sorted;
for (int i = 0; i < m; i++) {
sorted.push_back({y[i], i});
}
sort(sorted.rbegin(), sorted.rend());
int maxi = -1;
map<pair<int, int>, vector<array<int, 3>>> adjList;
vector<vector<int>> pts(n);
set<int> tall;
int ptr1 = 0;
vector<pair<int, int>> buildings;
for (int i = 0; i < n; i++) {
buildings.push_back({h[i], i});
}
sort(buildings.rbegin(), buildings.rend());
for (int k = 0; k < m; k++) {
int yc = sorted[k].first;
int i = sorted[k].second;
while (ptr1 < n && buildings[ptr1].first >= yc) {
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |