#include "walk.h"
#include<bits/stdc++.h>
namespace {
namespace min_distance_set {
using namespace std;
using ll = long long;
using height_t = pair<ll, int>;
const ll INF = 1e18;
struct height_container {
set<height_t> alive;
map<height_t, ll> value;
ll query(height_t h) {
ll ans = INF;
auto it = value.lower_bound(h);
if (it != value.end()) {
ans = min(ans, it->second + abs(h.first - it->first.first));
}
if (it != value.begin()) {
--it;
ans = min(ans, it->second + abs(h.first - it->first.first));
}
return ans;
}
void insert_line(height_t h, ll v = INF) {
assert(!alive.count(h));
alive.insert(h);
if (v == INF || v >= query(h)) {
return;
}
assert(!value.count(h));
auto emp = value.emplace(h, v);
assert(emp.second);
while (true) {
auto it = emp.first;
++it;
if (it == value.end()) break;
if (it->second >= emp.first->second + abs(it->first.first - emp.first->first.first)) {
value.erase(it);
} else {
break;
}
}
while (true) {
auto it = emp.first;
if (it == value.begin()) break;
--it;
if (it->second >= emp.first->second + abs(it->first.first - emp.first->first.first)) {
value.erase(it);
} else {
break;
}
}
}
void delete_line(height_t h) {
assert(alive.count(h));
if (value.count(h)) {
auto pt = alive.find(h);
auto nt = pt;
if (pt != alive.begin()) {
--pt;
ll v = query(*pt);
value.emplace(*pt, v);
}
if (nt != alive.end()) {
++nt;
if (nt != alive.end()) {
ll v = query(*nt);
value.emplace(*nt, v);
}
}
value.erase(h);
}
alive.erase(h);
}
void insert_all(vector<height_t> v) {
for (height_t h : v) insert_line(h);
}
void delete_all(vector<height_t> v) {
for (height_t h : v) delete_line(h);
}
friend std::ostream& operator << (std::ostream& o, const height_container& h) {
o << "[";
for (const auto& it : h.alive) {
o << "(" << it.first << "," << it.second << ")";
o << ": ";
if (h.value.count(it)) {
o << h.value.at(it);
} else {
o << "_";
}
o << ", ";
}
o << "]";
return o;
}
};
ll min_distance(vector<int> X_, vector<int> H_, vector<int> L, vector<int> R, vector<int> Y_, int S, int T) {
int N = int(X_.size());
int M = int(Y_.size());
vector<ll> X(X_.begin(), X_.end());
vector<height_t> H(N);
for (int i = 0; i < N; i++) {
H[i] = {H_[i], i};
}
vector<height_t> Y(M);
for (int e = 0; e < M; e++) {
Y[e] = {Y_[e], -1-e};
}
if (S > T) swap(S, T);
assert(S < T);
// peak index
int P = int(max_element(H.begin() + S, H.begin() + T + 1) - H.begin());
assert(H[P] >= H[S] && H[P] >= H[T]);
const height_t BOTTOM = {0, -M-1};
const height_t TOP = {INF, N};
vector<vector<height_t>> lefts(N);
vector<vector<height_t>> rights(N);
for (int e = 0; e < M; e++) {
lefts[L[e]].push_back(Y[e]);
rights[R[e]].push_back(Y[e]);
}
priority_queue<height_t, vector<height_t>, greater<height_t>> highEdges;
for (int e = 0; e < M; e++) {
highEdges.push(Y[e]);
}
if (false) { // left->right only
if (S == 0 && T == N-1) {
height_container hc;
hc.insert_line(BOTTOM, 0);
rights[S].push_back(BOTTOM);
lefts[T].push_back(BOTTOM);
for (int i = 0; i < N; i++) {
hc.insert_all(lefts[i]);
hc.delete_all(rights[i]);
}
ll ans = hc.query(BOTTOM);
if (ans == INF) {
return -1;
}
return ans + (X[T] - X[S]);
} else {
return -2;
}
}
height_container sLeft, sRight, tLeft, tRight;
sLeft.insert_line({0, -M-1}, 0);
sRight.insert_line({0, -M-1}, 0);
tLeft.insert_line({0, -M-1}, 0);
tRight.insert_line({0, -M-1}, 0);
lefts[S].push_back({0, -M-1});
rights[S].push_back({0, -M-1});
lefts[T].push_back({0, -M-1});
rights[T].push_back({0, -M-1});
int sl = S, sr = S, tl = T, tr = T;
ll ans = INF;
bool crossedMid = false;
while (true) {
height_t evtHeight = TOP;
if (!highEdges.empty()) {
evtHeight = min(evtHeight, highEdges.top());
}
if (sl > 0) {
evtHeight = min(evtHeight, H[sl]);
}
if (!crossedMid) {
evtHeight = min(evtHeight, H[sr]);
evtHeight = min(evtHeight, H[tl]);
}
if (tr < N-1) {
evtHeight = min(evtHeight, H[tr]);
}
if (evtHeight == TOP) break;
if (!highEdges.empty() && evtHeight == highEdges.top()) {
// do the thing
int e = -1-highEdges.top().second;
highEdges.pop();
if (crossedMid) {
assert(Y[e] > H[P]);
assert(L[e] < S || L[e] > T);
assert(R[e] < S || R[e] > T);
if (L[e] < P && P < R[e]) {
// just connect the two, it crosses
ans = min(ans, sLeft.query(Y[e]) + tRight.query(Y[e]) + 2 * (X[S] - X[sl]) + 2 * (X[tr] - X[T]));
// it's never optimal to go further, so we could just break
//break;
sLeft.insert_line(Y[e]);
tRight.insert_line(Y[e]);
}
} else {
assert(Y[e] <= H[P]);
if (L[e] <= S && S <= R[e]) {
ll rval = sRight.query(Y[e]) + 2 * (X[sr] - X[S]);
ll lval = sLeft.query(Y[e]) + 2 * (X[S] - X[sl]);
sLeft.insert_line(Y[e], rval);
sRight.insert_line(Y[e], lval);
}
if (L[e] <= T && T <= R[e]) {
ll rval = tRight.query(Y[e]) + 2 * (X[tr] - X[T]);
ll lval = tLeft.query(Y[e]) + 2 * (X[T] - X[tl]);
tLeft.insert_line(Y[e], rval);
tRight.insert_line(Y[e], lval);
}
}
} else if (!crossedMid && evtHeight == H[P]) {
assert(sr == P && tl == P);
for (auto it : sRight.value) {
ans = min(ans, it.second + tLeft.query(it.first));
}
crossedMid = true;
} else if (sl > 0 && evtHeight == H[sl]) {
sLeft.delete_all(lefts[sl]);
--sl;
sLeft.insert_all(rights[sl]);
} else if (sr < P && evtHeight == H[sr]) {
sRight.delete_all(rights[sr]);
++sr;
sRight.insert_all(lefts[sr]);
} else if (tl > P && evtHeight == H[tl]) {
tLeft.delete_all(lefts[tl]);
--tl;
tLeft.insert_all(rights[tl]);
} else if (tr < N-1 && evtHeight == H[tr]) {
tRight.delete_all(rights[tr]);
++tr;
tRight.insert_all(lefts[tr]);
} else assert(false);
}
//cerr << ans << '\n';
if (ans == INF) return -1;
else return ans + (X[T] - X[S]);
}
} // namespace min_distance_set
namespace min_distance_dijk {
using namespace std;
using ll = long long;
using height_t = pair<int, int>;
ll min_distance(vector<int> X_, vector<int> H_, vector<int> L, vector<int> R, vector<int> Y_, int S, int T) {
int N = int(X_.size());
int M = int(Y_.size());
vector<ll> X(X_.begin(), X_.end());
vector<height_t> H(N);
for (int i = 0; i < N; i++) {
H[i] = {H_[i], i};
}
vector<height_t> Y(M);
for (int e = 0; e < M; e++) {
Y[e] = {Y_[e], -1-e};
}
vector<vector<height_t>> needs(N);
vector<height_t> heights;
heights.insert(heights.end(), H.begin(), H.end());
heights.insert(heights.end(), Y.begin(), Y.end());
sort(heights.begin(), heights.end());
reverse(heights.begin(), heights.end());
set<int> posts;
for (height_t h : heights) {
if (h.second >= 0) {
// it's a post
posts.insert(h.second);
} else {
int e = -1-h.second;
set<int> eNeeds;
eNeeds.insert(L[e]);
eNeeds.insert(R[e]);
for (int p : {S, T}) {
if (L[e] <= p && p <= R[e]) {
{
auto it = posts.lower_bound(p);
if (it != posts.end()) {
eNeeds.insert(*it);
}
}
{
auto it = posts.upper_bound(p);
if (it != posts.begin()) {
eNeeds.insert(*--it);
}
}
}
}
for (int i : eNeeds) {
needs[i].push_back(h);
}
}
}
int V = 0;
vector<vector<pair<int, ll>>> adj;
map<height_t, pair<int, int>> prvVert;
set<height_t> inters;
vector<vector<height_t>> lefts(N);
vector<vector<height_t>> rights(N);
for (int e = 0; e < M; e++) {
lefts[L[e]].push_back(Y[e]);
rights[R[e]].push_back(Y[e]);
}
const height_t SBOTTOM(0, -1-M);
lefts[S].push_back(SBOTTOM);
rights[S].push_back(SBOTTOM);
needs[S].push_back(SBOTTOM);
const height_t TBOTTOM(0, -1-(M+1));
lefts[T].push_back(TBOTTOM);
rights[T].push_back(TBOTTOM);
needs[T].push_back(TBOTTOM);
int Svert = -1, Tvert = -1;
for (int i = 0; i < N; i++) {
for (height_t h : lefts[i]) {
inters.insert(h);
}
reverse(needs[i].begin(), needs[i].end()); // should now be sorted
vector<height_t> realNeeds;
for (height_t h : needs[i]) {
auto it = inters.find(h);
assert(it != inters.end());
auto kt = it;
if (kt != inters.begin()) {
--kt;
if (realNeeds.empty() || realNeeds.back() < *kt) {
realNeeds.push_back(*kt);
}
}
if (realNeeds.empty() || realNeeds.back() < *it) {
realNeeds.push_back(*it);
}
auto jt = it; ++jt;
if (jt != inters.end()) {
if (realNeeds.empty() || realNeeds.back() < *jt) {
realNeeds.push_back(*jt);
}
}
}
while (!realNeeds.empty() && realNeeds.back() > H[i]) realNeeds.pop_back();
assert(V == int(adj.size()));
adj.resize(V + int(realNeeds.size()));
for (int z = 0; z < int(realNeeds.size()); z++) {
height_t h = realNeeds[z];
int v = V + z;
auto it = prvVert.find(h);
if (it != prvVert.end()) {
int u = it->second.second;
ll d = X[i] - X[it->second.first];
adj[v].emplace_back(u, d);
adj[u].emplace_back(v, d);
it->second = {i, v};
} else {
prvVert.emplace(h, pair<int, int>{i, v});
}
}
for (int z = 0; z+1 < int(realNeeds.size()); z++) {
assert(realNeeds[z] < realNeeds[z+1]);
int v = V + z + 1;
int u = V + z;
ll d = realNeeds[z+1].first - realNeeds[z].first;
adj[v].emplace_back(u, d);
adj[u].emplace_back(v, d);
}
if (i == S) {
assert(!realNeeds.empty());
assert(realNeeds[0] == SBOTTOM);
Svert = V + 0;
}
if (i == T) {
assert(!realNeeds.empty());
assert(realNeeds[0] == TBOTTOM);
Tvert = V + 0;
}
V += int(realNeeds.size());
for (height_t h : rights[i]) {
inters.erase(h);
}
}
const ll INF = 1e18;
vector<ll> dist(V, INF);
priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;
dist[Svert] = 0;
pq.emplace(0, Svert);
while (!pq.empty()) {
int cur = pq.top().second;
ll d = pq.top().first;
pq.pop();
if (dist[cur] != d) continue;
if (cur == Tvert) return d;
for (auto it : adj[cur]) {
int nxt = it.first;
ll nd = d + it.second;
if (nd < dist[nxt]) {
dist[nxt] = nd;
pq.emplace(nd, nxt);
}
}
}
return -1;
}
} // namespace min_distance_dijk
} // anonymous namespace
long long min_distance(std::vector<int> X, std::vector<int> H, std::vector<int> L, std::vector<int> R, std::vector<int> Y, int S, int T) {
if (true) {
return min_distance_set::min_distance(X, H, L, R, Y, S, T);
} else {
return min_distance_dijk::min_distance(X, H, L, R, Y, S, T);
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
380 KB |
Output is correct |
3 |
Correct |
2 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
2 ms |
348 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
296 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
11 |
Correct |
3 ms |
376 KB |
Output is correct |
12 |
Correct |
2 ms |
256 KB |
Output is correct |
13 |
Correct |
2 ms |
380 KB |
Output is correct |
14 |
Correct |
2 ms |
376 KB |
Output is correct |
15 |
Correct |
2 ms |
256 KB |
Output is correct |
16 |
Correct |
3 ms |
376 KB |
Output is correct |
17 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
380 KB |
Output is correct |
2 |
Correct |
2 ms |
256 KB |
Output is correct |
3 |
Correct |
188 ms |
15724 KB |
Output is correct |
4 |
Correct |
233 ms |
27088 KB |
Output is correct |
5 |
Correct |
160 ms |
23408 KB |
Output is correct |
6 |
Correct |
163 ms |
23540 KB |
Output is correct |
7 |
Correct |
165 ms |
23656 KB |
Output is correct |
8 |
Correct |
193 ms |
15728 KB |
Output is correct |
9 |
Correct |
208 ms |
24048 KB |
Output is correct |
10 |
Correct |
234 ms |
26480 KB |
Output is correct |
11 |
Correct |
182 ms |
19436 KB |
Output is correct |
12 |
Correct |
194 ms |
27244 KB |
Output is correct |
13 |
Correct |
239 ms |
27244 KB |
Output is correct |
14 |
Correct |
178 ms |
25068 KB |
Output is correct |
15 |
Correct |
200 ms |
25740 KB |
Output is correct |
16 |
Correct |
220 ms |
24612 KB |
Output is correct |
17 |
Correct |
189 ms |
23884 KB |
Output is correct |
18 |
Correct |
375 ms |
47104 KB |
Output is correct |
19 |
Correct |
9 ms |
1660 KB |
Output is correct |
20 |
Correct |
77 ms |
12656 KB |
Output is correct |
21 |
Correct |
170 ms |
22892 KB |
Output is correct |
22 |
Correct |
203 ms |
26476 KB |
Output is correct |
23 |
Correct |
385 ms |
37224 KB |
Output is correct |
24 |
Correct |
190 ms |
25196 KB |
Output is correct |
25 |
Correct |
177 ms |
23956 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
74 ms |
8312 KB |
Output is correct |
2 |
Correct |
154 ms |
13848 KB |
Output is correct |
3 |
Correct |
195 ms |
15724 KB |
Output is correct |
4 |
Correct |
241 ms |
26404 KB |
Output is correct |
5 |
Correct |
289 ms |
31848 KB |
Output is correct |
6 |
Correct |
301 ms |
31592 KB |
Output is correct |
7 |
Correct |
128 ms |
19540 KB |
Output is correct |
8 |
Correct |
185 ms |
27272 KB |
Output is correct |
9 |
Correct |
311 ms |
35300 KB |
Output is correct |
10 |
Correct |
209 ms |
31516 KB |
Output is correct |
11 |
Correct |
20 ms |
5748 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
74 ms |
8312 KB |
Output is correct |
2 |
Correct |
154 ms |
13848 KB |
Output is correct |
3 |
Correct |
195 ms |
15724 KB |
Output is correct |
4 |
Correct |
241 ms |
26404 KB |
Output is correct |
5 |
Correct |
289 ms |
31848 KB |
Output is correct |
6 |
Correct |
301 ms |
31592 KB |
Output is correct |
7 |
Correct |
128 ms |
19540 KB |
Output is correct |
8 |
Correct |
185 ms |
27272 KB |
Output is correct |
9 |
Correct |
311 ms |
35300 KB |
Output is correct |
10 |
Correct |
209 ms |
31516 KB |
Output is correct |
11 |
Correct |
20 ms |
5748 KB |
Output is correct |
12 |
Correct |
176 ms |
15716 KB |
Output is correct |
13 |
Correct |
251 ms |
26348 KB |
Output is correct |
14 |
Correct |
321 ms |
37992 KB |
Output is correct |
15 |
Correct |
215 ms |
26708 KB |
Output is correct |
16 |
Correct |
223 ms |
27128 KB |
Output is correct |
17 |
Correct |
220 ms |
27128 KB |
Output is correct |
18 |
Correct |
213 ms |
26728 KB |
Output is correct |
19 |
Correct |
214 ms |
26980 KB |
Output is correct |
20 |
Correct |
148 ms |
19560 KB |
Output is correct |
21 |
Correct |
48 ms |
11868 KB |
Output is correct |
22 |
Correct |
183 ms |
24172 KB |
Output is correct |
23 |
Correct |
181 ms |
24816 KB |
Output is correct |
24 |
Correct |
190 ms |
25576 KB |
Output is correct |
25 |
Correct |
173 ms |
24300 KB |
Output is correct |
26 |
Correct |
203 ms |
27536 KB |
Output is correct |
27 |
Correct |
380 ms |
32488 KB |
Output is correct |
28 |
Correct |
265 ms |
26348 KB |
Output is correct |
29 |
Correct |
313 ms |
32604 KB |
Output is correct |
30 |
Correct |
137 ms |
19568 KB |
Output is correct |
31 |
Correct |
391 ms |
35324 KB |
Output is correct |
32 |
Correct |
215 ms |
26200 KB |
Output is correct |
33 |
Correct |
189 ms |
27068 KB |
Output is correct |
34 |
Correct |
225 ms |
28968 KB |
Output is correct |
35 |
Correct |
206 ms |
25696 KB |
Output is correct |
36 |
Correct |
183 ms |
24812 KB |
Output is correct |
37 |
Correct |
179 ms |
23020 KB |
Output is correct |
38 |
Correct |
194 ms |
26476 KB |
Output is correct |
39 |
Correct |
359 ms |
37320 KB |
Output is correct |
40 |
Correct |
181 ms |
25324 KB |
Output is correct |
41 |
Correct |
184 ms |
23916 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
380 KB |
Output is correct |
3 |
Correct |
2 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
2 ms |
348 KB |
Output is correct |
8 |
Correct |
2 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
296 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
11 |
Correct |
3 ms |
376 KB |
Output is correct |
12 |
Correct |
2 ms |
256 KB |
Output is correct |
13 |
Correct |
2 ms |
380 KB |
Output is correct |
14 |
Correct |
2 ms |
376 KB |
Output is correct |
15 |
Correct |
2 ms |
256 KB |
Output is correct |
16 |
Correct |
3 ms |
376 KB |
Output is correct |
17 |
Correct |
2 ms |
376 KB |
Output is correct |
18 |
Correct |
2 ms |
380 KB |
Output is correct |
19 |
Correct |
2 ms |
256 KB |
Output is correct |
20 |
Correct |
188 ms |
15724 KB |
Output is correct |
21 |
Correct |
233 ms |
27088 KB |
Output is correct |
22 |
Correct |
160 ms |
23408 KB |
Output is correct |
23 |
Correct |
163 ms |
23540 KB |
Output is correct |
24 |
Correct |
165 ms |
23656 KB |
Output is correct |
25 |
Correct |
193 ms |
15728 KB |
Output is correct |
26 |
Correct |
208 ms |
24048 KB |
Output is correct |
27 |
Correct |
234 ms |
26480 KB |
Output is correct |
28 |
Correct |
182 ms |
19436 KB |
Output is correct |
29 |
Correct |
194 ms |
27244 KB |
Output is correct |
30 |
Correct |
239 ms |
27244 KB |
Output is correct |
31 |
Correct |
178 ms |
25068 KB |
Output is correct |
32 |
Correct |
200 ms |
25740 KB |
Output is correct |
33 |
Correct |
220 ms |
24612 KB |
Output is correct |
34 |
Correct |
189 ms |
23884 KB |
Output is correct |
35 |
Correct |
375 ms |
47104 KB |
Output is correct |
36 |
Correct |
9 ms |
1660 KB |
Output is correct |
37 |
Correct |
77 ms |
12656 KB |
Output is correct |
38 |
Correct |
170 ms |
22892 KB |
Output is correct |
39 |
Correct |
203 ms |
26476 KB |
Output is correct |
40 |
Correct |
385 ms |
37224 KB |
Output is correct |
41 |
Correct |
190 ms |
25196 KB |
Output is correct |
42 |
Correct |
177 ms |
23956 KB |
Output is correct |
43 |
Correct |
74 ms |
8312 KB |
Output is correct |
44 |
Correct |
154 ms |
13848 KB |
Output is correct |
45 |
Correct |
195 ms |
15724 KB |
Output is correct |
46 |
Correct |
241 ms |
26404 KB |
Output is correct |
47 |
Correct |
289 ms |
31848 KB |
Output is correct |
48 |
Correct |
301 ms |
31592 KB |
Output is correct |
49 |
Correct |
128 ms |
19540 KB |
Output is correct |
50 |
Correct |
185 ms |
27272 KB |
Output is correct |
51 |
Correct |
311 ms |
35300 KB |
Output is correct |
52 |
Correct |
209 ms |
31516 KB |
Output is correct |
53 |
Correct |
20 ms |
5748 KB |
Output is correct |
54 |
Correct |
176 ms |
15716 KB |
Output is correct |
55 |
Correct |
251 ms |
26348 KB |
Output is correct |
56 |
Correct |
321 ms |
37992 KB |
Output is correct |
57 |
Correct |
215 ms |
26708 KB |
Output is correct |
58 |
Correct |
223 ms |
27128 KB |
Output is correct |
59 |
Correct |
220 ms |
27128 KB |
Output is correct |
60 |
Correct |
213 ms |
26728 KB |
Output is correct |
61 |
Correct |
214 ms |
26980 KB |
Output is correct |
62 |
Correct |
148 ms |
19560 KB |
Output is correct |
63 |
Correct |
48 ms |
11868 KB |
Output is correct |
64 |
Correct |
183 ms |
24172 KB |
Output is correct |
65 |
Correct |
181 ms |
24816 KB |
Output is correct |
66 |
Correct |
190 ms |
25576 KB |
Output is correct |
67 |
Correct |
173 ms |
24300 KB |
Output is correct |
68 |
Correct |
203 ms |
27536 KB |
Output is correct |
69 |
Correct |
380 ms |
32488 KB |
Output is correct |
70 |
Correct |
265 ms |
26348 KB |
Output is correct |
71 |
Correct |
313 ms |
32604 KB |
Output is correct |
72 |
Correct |
137 ms |
19568 KB |
Output is correct |
73 |
Correct |
391 ms |
35324 KB |
Output is correct |
74 |
Correct |
215 ms |
26200 KB |
Output is correct |
75 |
Correct |
189 ms |
27068 KB |
Output is correct |
76 |
Correct |
225 ms |
28968 KB |
Output is correct |
77 |
Correct |
206 ms |
25696 KB |
Output is correct |
78 |
Correct |
183 ms |
24812 KB |
Output is correct |
79 |
Correct |
179 ms |
23020 KB |
Output is correct |
80 |
Correct |
194 ms |
26476 KB |
Output is correct |
81 |
Correct |
359 ms |
37320 KB |
Output is correct |
82 |
Correct |
181 ms |
25324 KB |
Output is correct |
83 |
Correct |
184 ms |
23916 KB |
Output is correct |
84 |
Correct |
62 ms |
7028 KB |
Output is correct |
85 |
Correct |
191 ms |
16108 KB |
Output is correct |
86 |
Correct |
400 ms |
38020 KB |
Output is correct |
87 |
Correct |
55 ms |
13304 KB |
Output is correct |
88 |
Correct |
57 ms |
13296 KB |
Output is correct |
89 |
Correct |
55 ms |
13304 KB |
Output is correct |
90 |
Correct |
20 ms |
3064 KB |
Output is correct |
91 |
Correct |
3 ms |
504 KB |
Output is correct |
92 |
Correct |
12 ms |
2040 KB |
Output is correct |
93 |
Correct |
112 ms |
17264 KB |
Output is correct |
94 |
Correct |
48 ms |
11896 KB |
Output is correct |
95 |
Correct |
191 ms |
24660 KB |
Output is correct |
96 |
Correct |
183 ms |
24940 KB |
Output is correct |
97 |
Correct |
183 ms |
25076 KB |
Output is correct |
98 |
Correct |
181 ms |
24172 KB |
Output is correct |
99 |
Correct |
477 ms |
43804 KB |
Output is correct |
100 |
Correct |
234 ms |
26388 KB |
Output is correct |
101 |
Correct |
442 ms |
34020 KB |
Output is correct |
102 |
Correct |
139 ms |
19440 KB |
Output is correct |
103 |
Correct |
200 ms |
26876 KB |
Output is correct |
104 |
Correct |
179 ms |
26976 KB |
Output is correct |
105 |
Correct |
228 ms |
28264 KB |
Output is correct |
106 |
Correct |
203 ms |
27620 KB |
Output is correct |
107 |
Correct |
236 ms |
28492 KB |
Output is correct |
108 |
Correct |
19 ms |
2752 KB |
Output is correct |
109 |
Correct |
221 ms |
25164 KB |
Output is correct |
110 |
Correct |
219 ms |
26152 KB |
Output is correct |
111 |
Correct |
210 ms |
26132 KB |
Output is correct |
112 |
Correct |
195 ms |
24944 KB |
Output is correct |
113 |
Correct |
195 ms |
24648 KB |
Output is correct |