#include<bits/stdc++.h>
#pragma GCC optimize("unroll-loops,no-stack-protector")
using namespace std;
typedef int ll;
typedef long double ld;
typedef pair<ll,ll> pll;
const ll MOD=1e9+7;
const ll MOD2=998244353;
const ll N=5e5+5;
const ll K=350;
const ld pi=acos(-1);
const ll INF=(1LL<<30);
#define SQ(i) ((i)*(i))
#define REP(i,n) for(ll i=0;i<n;i++)
#define REP1(i,n) for(ll i=1;i<=n;i++)
#define pb push_back
#define mp make_pair
#define setp setprecision
#define lwb lower_bound
#define SZ(_a) (ll)_a.size()
ll tag[4*N],ma[4*N];
set<ll> cnt[4*N];
vector<ll> lis;
void push(ll id){
if(tag[id]){
tag[id*2]+=tag[id];
ma[id*2]+=tag[id];
tag[id*2+1]+=tag[id];
ma[id*2+1]+=tag[id];
tag[id]=0;
}
}
void add(ll id,ll l,ll r,ll ql,ll qr,ll val){
if(l>=ql&&r<=qr){tag[id]+=val;ma[id]+=val;return;}
if(l>=qr||r<=ql)return ;
ll mid=(l+r)/2;
push(id);
add(id*2,l,mid,ql,qr,val);
add(id*2+1,mid,r,ql,qr,val);
ma[id]=max(ma[id*2],ma[id*2+1]);
}
void upd(ll to,ll val){
ll D=*prev(cnt[to].end());
if(val>0){
cnt[to].insert(val);
}else{
cnt[to].erase(-val);
}
D=*prev(cnt[to].end())-D;
add(1,1,SZ(lis)+1,to,to+1,D);
add(1,1,SZ(lis)+1,to,SZ(lis)+1,(val>0?-1:1));
}
vector<ll> countScans(vector<ll> A,vector<ll> X,vector<ll> V){
vector<ll> ans;
for(auto i:A)lis.pb(i);for(auto i:V)lis.pb(i);
lis.resize(unique(lis.begin(),lis.end())-lis.begin());
for(auto &i:A)i=lwb(lis.begin(),lis.end(),i)-lis.begin()+1;
for(auto &i:V)i=lwb(lis.begin(),lis.end(),i)-lis.begin()+1;
REP1(i,SZ(lis))cnt[i].insert(0);
REP(i,SZ(A))upd(A[i],i+1);
REP(i,SZ(X)){
upd(A[X[i]],-X[i]-1);
upd(A[X[i]]=V[i],X[i]+1);
ans.pb(ma[1]);
}
return ans;
}
/*
int main(){
vector<ll> A,X,V;
ll n,q,x;
cin>>n>>q;
REP(i,n)cin>>x,A.pb(x);
REP(i,q)cin>>x,X.pb(x),cin>>x,V.pb(x);
vector<ll> ans=countScans(A,X,V);
for(ll i:ans)cout<<i<<"\n";
}
//*/
Compilation message
bubblesort2.cpp: In function 'std::vector<int> countScans(std::vector<int>, std::vector<int>, std::vector<int>)':
bubblesort2.cpp:60:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
60 | for(auto i:A)lis.pb(i);for(auto i:V)lis.pb(i);
| ^~~
bubblesort2.cpp:60:25: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
60 | for(auto i:A)lis.pb(i);for(auto i:V)lis.pb(i);
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
185 ms |
190956 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
185 ms |
190956 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
191 ms |
194668 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
185 ms |
190956 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |