/*input
*/
#include<bits/stdc++.h>
using namespace std;
const int N=1e6 + 1099;
const int mod=1e9 + 7;
#define pii pair<int, int>
#define f first
#define s second
#define mp make_pair
int n;map<int, int> conv;
multiset<int> positions[N];
class tree
{
int tree[4*N], lazy[4*N], ql, qr, val;
void prop(int i, int l, int r)
{
tree[i]+=lazy[i];
if(l!=r)
{
lazy[2*i]+=lazy[i];lazy[2*i+1]+=lazy[i];
}
lazy[i]=0;
}
void update(int i=1, int l=1, int r=N-1)
{
prop(i, l, r);
if(l>qr||r<ql) return;
if(l>=ql&&r<=qr)
{
lazy[i]+=val;prop(i, l, r);
return;
}
int mid=(l+r)>>1;update(2*i, l, mid);update(2*i+1, mid+1, r);tree[i]=max(tree[2*i], tree[2*i+1]);
}
int query(int i=1, int l=1, int r=N-1)
{
prop(i, l, r);
if(l>qr||r<ql) return 0;
if(l>=ql&&r<=qr)
{
return tree[i];
}
int mid=(l+r)>>1;
int v1=query(2*i, l, mid), v2=query(2*i+1, mid+1, r);
tree[i]=max(tree[2*i], tree[2*i+1]);return max(v1, v2);
}
public:
void remove(int ind, int el)
{
int prevmax=(*positions[el].rbegin());
positions[el].erase(ind);
if(!positions[el].empty()) prevmax=(*positions[el].rbegin()) - prevmax;
else prevmax*=-1;
ql=qr=el;val=prevmax;
if(val!=0) update();
ql=el+1;qr=N-1;val=+1;update();
}
void add(int ind, int el)
{
int prevmax=0;
if(!positions[el].empty()) prevmax=(*positions[el].rbegin());
positions[el].insert(ind);
prevmax=(*positions[el].rbegin() - prevmax);
ql=qr=el;val=prevmax;
if(val!=0) update();
ql=el+1;qr=N-1;val=-1;update();
}
int qry()
{
ql=1;qr=N-1;return query();
}
};
tree Segtree;
vector<int> countScans(vector<int> arr, vector<int> pos, vector<int> nval)
{
n=arr.size();int q=pos.size();vector<int> ans;
conv.clear();
for(auto i:arr) conv[i]=0;
for(auto i:nval) conv[i]=0;
int curv=1;
for(auto &i:conv) i.s=curv++;
for(int i=0;i<n;i++) {arr[i]=conv[arr[i]];Segtree.add(i, arr[i]);}
for(auto &i:nval) i=conv[i];
// cout<<Segtree.qry()<<endl;
for(int i=0;i<q;i++)
{
Segtree.remove(pos[i], arr[pos[i]]);
Segtree.add(pos[i], nval[i]);arr[pos[i]]=nval[i];
ans.push_back(Segtree.qry());
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
48 ms |
47608 KB |
Output is correct |
2 |
Correct |
49 ms |
47736 KB |
Output is correct |
3 |
Correct |
54 ms |
47868 KB |
Output is correct |
4 |
Correct |
53 ms |
47912 KB |
Output is correct |
5 |
Correct |
53 ms |
47864 KB |
Output is correct |
6 |
Correct |
53 ms |
47920 KB |
Output is correct |
7 |
Correct |
53 ms |
47864 KB |
Output is correct |
8 |
Correct |
53 ms |
47992 KB |
Output is correct |
9 |
Correct |
54 ms |
47992 KB |
Output is correct |
10 |
Correct |
53 ms |
47892 KB |
Output is correct |
11 |
Correct |
53 ms |
47836 KB |
Output is correct |
12 |
Correct |
55 ms |
47864 KB |
Output is correct |
13 |
Correct |
53 ms |
47864 KB |
Output is correct |
14 |
Correct |
53 ms |
47864 KB |
Output is correct |
15 |
Correct |
59 ms |
47840 KB |
Output is correct |
16 |
Correct |
60 ms |
47868 KB |
Output is correct |
17 |
Correct |
55 ms |
47864 KB |
Output is correct |
18 |
Correct |
61 ms |
47864 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
48 ms |
47608 KB |
Output is correct |
2 |
Correct |
49 ms |
47736 KB |
Output is correct |
3 |
Correct |
54 ms |
47868 KB |
Output is correct |
4 |
Correct |
53 ms |
47912 KB |
Output is correct |
5 |
Correct |
53 ms |
47864 KB |
Output is correct |
6 |
Correct |
53 ms |
47920 KB |
Output is correct |
7 |
Correct |
53 ms |
47864 KB |
Output is correct |
8 |
Correct |
53 ms |
47992 KB |
Output is correct |
9 |
Correct |
54 ms |
47992 KB |
Output is correct |
10 |
Correct |
53 ms |
47892 KB |
Output is correct |
11 |
Correct |
53 ms |
47836 KB |
Output is correct |
12 |
Correct |
55 ms |
47864 KB |
Output is correct |
13 |
Correct |
53 ms |
47864 KB |
Output is correct |
14 |
Correct |
53 ms |
47864 KB |
Output is correct |
15 |
Correct |
59 ms |
47840 KB |
Output is correct |
16 |
Correct |
60 ms |
47868 KB |
Output is correct |
17 |
Correct |
55 ms |
47864 KB |
Output is correct |
18 |
Correct |
61 ms |
47864 KB |
Output is correct |
19 |
Correct |
75 ms |
49056 KB |
Output is correct |
20 |
Correct |
80 ms |
49276 KB |
Output is correct |
21 |
Correct |
85 ms |
49400 KB |
Output is correct |
22 |
Correct |
92 ms |
49272 KB |
Output is correct |
23 |
Correct |
87 ms |
49144 KB |
Output is correct |
24 |
Correct |
78 ms |
49148 KB |
Output is correct |
25 |
Correct |
79 ms |
49112 KB |
Output is correct |
26 |
Correct |
90 ms |
49144 KB |
Output is correct |
27 |
Correct |
91 ms |
49116 KB |
Output is correct |
28 |
Correct |
86 ms |
49016 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
96 ms |
49124 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
48 ms |
47608 KB |
Output is correct |
2 |
Correct |
49 ms |
47736 KB |
Output is correct |
3 |
Correct |
54 ms |
47868 KB |
Output is correct |
4 |
Correct |
53 ms |
47912 KB |
Output is correct |
5 |
Correct |
53 ms |
47864 KB |
Output is correct |
6 |
Correct |
53 ms |
47920 KB |
Output is correct |
7 |
Correct |
53 ms |
47864 KB |
Output is correct |
8 |
Correct |
53 ms |
47992 KB |
Output is correct |
9 |
Correct |
54 ms |
47992 KB |
Output is correct |
10 |
Correct |
53 ms |
47892 KB |
Output is correct |
11 |
Correct |
53 ms |
47836 KB |
Output is correct |
12 |
Correct |
55 ms |
47864 KB |
Output is correct |
13 |
Correct |
53 ms |
47864 KB |
Output is correct |
14 |
Correct |
53 ms |
47864 KB |
Output is correct |
15 |
Correct |
59 ms |
47840 KB |
Output is correct |
16 |
Correct |
60 ms |
47868 KB |
Output is correct |
17 |
Correct |
55 ms |
47864 KB |
Output is correct |
18 |
Correct |
61 ms |
47864 KB |
Output is correct |
19 |
Correct |
75 ms |
49056 KB |
Output is correct |
20 |
Correct |
80 ms |
49276 KB |
Output is correct |
21 |
Correct |
85 ms |
49400 KB |
Output is correct |
22 |
Correct |
92 ms |
49272 KB |
Output is correct |
23 |
Correct |
87 ms |
49144 KB |
Output is correct |
24 |
Correct |
78 ms |
49148 KB |
Output is correct |
25 |
Correct |
79 ms |
49112 KB |
Output is correct |
26 |
Correct |
90 ms |
49144 KB |
Output is correct |
27 |
Correct |
91 ms |
49116 KB |
Output is correct |
28 |
Correct |
86 ms |
49016 KB |
Output is correct |
29 |
Incorrect |
96 ms |
49124 KB |
Output isn't correct |
30 |
Halted |
0 ms |
0 KB |
- |