#include "walk.h"
#ifdef NYAOWO
#include "grader.cpp"
#endif
#include <bits/stdc++.h>
#define For(i, a, b) for(int i = a; i <= b; i++)
#define Forr(i,a, b) for(int i = a; i >= b; i--)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define sz(x) ((int)x.size())
#define eb emplace_back
#define int LL
using namespace std;
using LL = long long;
using pii = pair<int, int>;
using Vi = vector<int32_t>;
const int MAXN = 100010;
const int INF = 2e9;
int n, m;
Vi st[MAXN], ed[MAXN];
int solve_1n(Vi x, Vi h, Vi l, Vi r, Vi y) {
For(i, 0, m - 1) {
st[l[i]].eb(y[i]);
ed[r[i]].eb(y[i]);
}
map<int, int> mp;
mp[0] = INF; mp[INF] = INF;
for(auto &i:st[0]) mp[i] = i;
auto eval = [&](int p, int hei) {
auto it1 = mp.upper_bound(p);
auto it2 = prev(it1);
int res = p - (it2->F) + (it2->S);
if(it1->F <= hei) {
res = min(res, (it1->F) - p + (it1->S));
}
// cout << (it1->F) << " " << (it1->S) << "\n";
// cout << (it2->F) << " " << (it2->S) << "\n";
return res;
};
For(i, 1, n - 2) {
set<int> upd;
for(auto &j:st[i]) {
int k = eval(j, h[i]);
mp[j] = k;
upd.insert(j);
}
for(auto &j:ed[i]) if(!upd.count(j)) {
mp.erase(j);
}
}
// cout << "\n";
// for(auto &p:mp) cout << p.F << " " << p.S << "\n";
// cout << "\n";
int ans = eval(0, h[n - 1]) + x.back() - x[0];
if(ans >= INF) return -1;
return ans;
}
long long min_distance(Vi x, Vi h, Vi l, Vi r, Vi y, int32_t s, int32_t g) {
n = sz(x);
m = sz(l);
return solve_1n(x, h, l, r, y);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
3 ms |
4948 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
3 ms |
4948 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
26 ms |
8576 KB |
Output is correct |
2 |
Correct |
92 ms |
11684 KB |
Output is correct |
3 |
Correct |
105 ms |
12636 KB |
Output is correct |
4 |
Correct |
142 ms |
19152 KB |
Output is correct |
5 |
Incorrect |
168 ms |
23544 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
26 ms |
8576 KB |
Output is correct |
2 |
Correct |
92 ms |
11684 KB |
Output is correct |
3 |
Correct |
105 ms |
12636 KB |
Output is correct |
4 |
Correct |
142 ms |
19152 KB |
Output is correct |
5 |
Incorrect |
168 ms |
23544 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
3 ms |
4948 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |