#include "elephants.h"
#include<bits/stdc++.h>
using namespace std;
const int blsz = 400;
const int maxn = 2e5+5;
const int INF = 2e9+5;
int sp[18][maxn];
multiset<int> current;
unordered_map<int, int> vmap;
multiset<int> changed;
int A[maxn];
int dval[maxn];
int n, l;
void build_sp(){
changed = {INF};
vmap.clear();
int crr = 0;
for(auto v: current)if(!crr || dval[crr-1] != v){
vmap[v] = crr;
dval[crr++] = v;
}
for(int i = 0; i < crr-1; i++){
sp[0][i] = upper_bound(dval, dval + crr, dval[i] + l) - dval;
}
sp[0][crr-1] = crr-1;
for(int i = 1; i < 18; i++){
for(int j = 0; j < crr; j++)sp[i][j] = sp[i-1][sp[i-1][j]];
}
}
void init(int N, int L, int X[])
{
n = N;
l = L;
current.insert(INF);
for(int i = 0; i < N; i++){
A[i] = X[i];
current.insert(A[i]);
}
build_sp();
}
int update(int i, int y)
{
current.erase(current.find(A[i]));
changed.insert(A[i]);
A[i] = y;
current.insert(A[i]);
changed.insert(A[i]);
int realcnt = 0, ans = 0;
int pos = *current.begin();
while(pos != INF){
realcnt++;
if(changed.find(pos) != changed.end()){
if(current.find(pos) == current.end())pos = *current.upper_bound(pos);
else {
ans++;
pos = *current.upper_bound(pos + l);
}
}
else {
int nxt_change = *changed.upper_bound(pos);
int id = vmap[pos];
for(int i = 17; i >= 0; i--){
if(dval[sp[i][id]] < nxt_change){
id = sp[i][id];
ans += (1<<i);
}
}
pos = *current.upper_bound(dval[id] + l);
ans++;
}
}
if(realcnt >= blsz)build_sp();
return ans;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
348 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
448 KB |
Output is correct |
5 |
Correct |
1 ms |
604 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
448 KB |
Output is correct |
5 |
Correct |
1 ms |
604 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
515 ms |
4188 KB |
Output is correct |
8 |
Correct |
575 ms |
5188 KB |
Output is correct |
9 |
Correct |
2244 ms |
11448 KB |
Output is correct |
10 |
Correct |
1131 ms |
14888 KB |
Output is correct |
11 |
Correct |
939 ms |
11092 KB |
Output is correct |
12 |
Correct |
4132 ms |
11284 KB |
Output is correct |
13 |
Correct |
3343 ms |
14684 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
448 KB |
Output is correct |
5 |
Correct |
1 ms |
604 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
515 ms |
4188 KB |
Output is correct |
8 |
Correct |
575 ms |
5188 KB |
Output is correct |
9 |
Correct |
2244 ms |
11448 KB |
Output is correct |
10 |
Correct |
1131 ms |
14888 KB |
Output is correct |
11 |
Correct |
939 ms |
11092 KB |
Output is correct |
12 |
Correct |
4132 ms |
11284 KB |
Output is correct |
13 |
Correct |
3343 ms |
14684 KB |
Output is correct |
14 |
Correct |
1695 ms |
7512 KB |
Output is correct |
15 |
Correct |
942 ms |
6836 KB |
Output is correct |
16 |
Correct |
5967 ms |
11900 KB |
Output is correct |
17 |
Correct |
8607 ms |
15316 KB |
Output is correct |
18 |
Correct |
8354 ms |
15256 KB |
Output is correct |
19 |
Correct |
2760 ms |
15456 KB |
Output is correct |
20 |
Correct |
7676 ms |
15316 KB |
Output is correct |
21 |
Correct |
8348 ms |
15200 KB |
Output is correct |
22 |
Correct |
5107 ms |
18592 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
348 KB |
Output is correct |
4 |
Correct |
1 ms |
448 KB |
Output is correct |
5 |
Correct |
1 ms |
604 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
515 ms |
4188 KB |
Output is correct |
8 |
Correct |
575 ms |
5188 KB |
Output is correct |
9 |
Correct |
2244 ms |
11448 KB |
Output is correct |
10 |
Correct |
1131 ms |
14888 KB |
Output is correct |
11 |
Correct |
939 ms |
11092 KB |
Output is correct |
12 |
Correct |
4132 ms |
11284 KB |
Output is correct |
13 |
Correct |
3343 ms |
14684 KB |
Output is correct |
14 |
Correct |
1695 ms |
7512 KB |
Output is correct |
15 |
Correct |
942 ms |
6836 KB |
Output is correct |
16 |
Correct |
5967 ms |
11900 KB |
Output is correct |
17 |
Correct |
8607 ms |
15316 KB |
Output is correct |
18 |
Correct |
8354 ms |
15256 KB |
Output is correct |
19 |
Correct |
2760 ms |
15456 KB |
Output is correct |
20 |
Correct |
7676 ms |
15316 KB |
Output is correct |
21 |
Correct |
8348 ms |
15200 KB |
Output is correct |
22 |
Correct |
5107 ms |
18592 KB |
Output is correct |
23 |
Execution timed out |
9024 ms |
32760 KB |
Time limit exceeded |
24 |
Halted |
0 ms |
0 KB |
- |