#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define pf push_front
#define lb lower_bound
#define sz(a) (int)a.size()
#define all(a) a.begin(),a.end()
using ar = array<int,2>;
const int mxN = 150010;
const int B = 700;
int n, L, a[mxN];
unordered_map<int,int> cnt;
struct Block{
vector<int> V; ar V2[B+10];
Block(){V.clear();}
void recalc(){
for(int i = sz(V)-1; i>=0; i--){
int pos = lb(begin(V)+i,end(V),V[i]+L+1)-begin(V);
if(pos==sz(V)) V2[i]=ar({1,V[i]+L+1});
else V2[i]=ar({V2[pos][0]+1,V2[pos][1]});
}
}
Block(vector<int> XD){ V.swap(XD); recalc(); }
void add(int x){
if(++cnt[x]!=1) return;
V.insert(lb(all(V),x),x); recalc();
}
void rem(int x){
if(--cnt[x]) return;
V.erase(lb(all(V),x)); recalc();
}
};
vector<Block> bl;
void combine(int i, int j){
if(i>j) swap(i,j);
int SZ = sz(bl[i].V)+sz(bl[j].V);
if(SZ>B) return; vector<int> V3(SZ);
merge(all(bl[i].V),all(bl[j].V),begin(V3));
bl[i]=Block(V3), bl.erase(begin(bl)+j);
}
void divide(int i){
int mid = sz(bl[i].V)/2; if(mid*2<=B) return;
auto B1 = Block(vector<int>(begin(bl[i].V),begin(bl[i].V)+mid));
auto B2 = Block(vector<int>(begin(bl[i].V)+mid,end(bl[i].V)));
bl.insert(begin(bl)+i+1,B2); bl[i]=B1;
}
void init(int N, int l, int A[]){
bl.pb({}); L = l; n = N;
for(int i = 0; i < n; i++)
a[i] = A[i], bl.back().add(a[i]), divide(sz(bl)-1);
}
int update(int p, int y){
for(int i = 0; i < sz(bl); i++){
if(bl[i].V.back()>=a[p]){
bl[i].rem(a[p]);
if(i) combine(i-1,i);
if(i<sz(bl)-1) combine(i,i+1);
break;
}
}
a[p] = y;
for(int i = 0; i < sz(bl); i++){
if(i==sz(bl)-1 or bl[i].V.back() >= a[p]){
bl[i].add(a[p]); divide(i); break;
}
}
int ans = 0, pos = 0;
for(Block cur : bl){
if(!sz(cur.V) or cur.V.back()<pos) continue;
auto p = lb(all(cur.V),pos)-begin(cur.V);
ans+=cur.V2[p][0], pos = cur.V2[p][1];
}
return ans;
}
Compilation message
elephants.cpp: In function 'void combine(int, int)':
elephants.cpp:39:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
39 | if(SZ>B) return; vector<int> V3(SZ);
| ^~
elephants.cpp:39:22: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
39 | if(SZ>B) return; vector<int> V3(SZ);
| ^~~~~~
elephants.cpp: In function 'void init(int, int, int*)':
elephants.cpp:14:8: warning: '<anonymous>.Block::V2' may be used uninitialized in this function [-Wmaybe-uninitialized]
14 | struct Block{
| ^~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1069 ms |
3764 KB |
Output is correct |
8 |
Correct |
1451 ms |
4076 KB |
Output is correct |
9 |
Correct |
3547 ms |
5352 KB |
Output is correct |
10 |
Correct |
4180 ms |
7100 KB |
Output is correct |
11 |
Correct |
4064 ms |
7164 KB |
Output is correct |
12 |
Correct |
3631 ms |
7088 KB |
Output is correct |
13 |
Correct |
4311 ms |
7244 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1069 ms |
3764 KB |
Output is correct |
8 |
Correct |
1451 ms |
4076 KB |
Output is correct |
9 |
Correct |
3547 ms |
5352 KB |
Output is correct |
10 |
Correct |
4180 ms |
7100 KB |
Output is correct |
11 |
Correct |
4064 ms |
7164 KB |
Output is correct |
12 |
Correct |
3631 ms |
7088 KB |
Output is correct |
13 |
Correct |
4311 ms |
7244 KB |
Output is correct |
14 |
Correct |
820 ms |
3920 KB |
Output is correct |
15 |
Correct |
2216 ms |
6556 KB |
Output is correct |
16 |
Correct |
4505 ms |
7364 KB |
Output is correct |
17 |
Correct |
5793 ms |
8772 KB |
Output is correct |
18 |
Correct |
5957 ms |
8788 KB |
Output is correct |
19 |
Correct |
7247 ms |
8960 KB |
Output is correct |
20 |
Correct |
6072 ms |
8968 KB |
Output is correct |
21 |
Correct |
6023 ms |
9032 KB |
Output is correct |
22 |
Correct |
7681 ms |
9044 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1069 ms |
3764 KB |
Output is correct |
8 |
Correct |
1451 ms |
4076 KB |
Output is correct |
9 |
Correct |
3547 ms |
5352 KB |
Output is correct |
10 |
Correct |
4180 ms |
7100 KB |
Output is correct |
11 |
Correct |
4064 ms |
7164 KB |
Output is correct |
12 |
Correct |
3631 ms |
7088 KB |
Output is correct |
13 |
Correct |
4311 ms |
7244 KB |
Output is correct |
14 |
Correct |
820 ms |
3920 KB |
Output is correct |
15 |
Correct |
2216 ms |
6556 KB |
Output is correct |
16 |
Correct |
4505 ms |
7364 KB |
Output is correct |
17 |
Correct |
5793 ms |
8772 KB |
Output is correct |
18 |
Correct |
5957 ms |
8788 KB |
Output is correct |
19 |
Correct |
7247 ms |
8960 KB |
Output is correct |
20 |
Correct |
6072 ms |
8968 KB |
Output is correct |
21 |
Correct |
6023 ms |
9032 KB |
Output is correct |
22 |
Correct |
7681 ms |
9044 KB |
Output is correct |
23 |
Execution timed out |
9064 ms |
16328 KB |
Time limit exceeded |
24 |
Halted |
0 ms |
0 KB |
- |