This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bubblesort2.h"
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define sz(a) (int)(a.size())
#define all(a) a.begin(),a.end()
typedef pair<int,int> pii;
const int MAXN = 1e6+1;
vector<int>t(4*MAXN,-1e9),lazy(4*MAXN,0);
vector<set<int,greater<int>>>s(MAXN);
vector<int>f(MAXN);
void upd1(int v,int l,int r,int pos,int val){
if(l > r)return;
if(l==r){
//lazy[v] = 0;
if(val < 0)s[pos].erase(-val);
else s[pos].insert(val);
if(!s[pos].empty())t[v] = *s[pos].begin() - f[pos] + lazy[v];
else t[v] = -1e9;
return;
}
int tm=(l+r)/2;
if(pos<=tm)upd1(2*v,l,tm,pos,val);
else upd1(2*v+1,tm+1,r,pos,val);
t[v] = max(t[2*v],t[2*v+1]) + lazy[v];
}
void upd2(int v,int l,int r,int tl,int tr,int val){
if(l > r)return;
if(l==tl && r == tr){
lazy[v]+=val;
t[v]+=val;
return;
}
int tm = (tl+tr)/2;
upd2(2*v,l,min(r,tm),tl,tm,val);
upd2(2*v+1,max(l,tm+1),r,tm+1,tr,val);
t[v] = max(t[2*v],t[2*v+1]) + lazy[v];
}
vector<int> countScans(vector<int> a,vector<int> x,vector<int>v){
int q=sz(x);
int n = sz(a);
vector<int> answer(q);
vector<int>b;
for(int i=0;i<n;i++)b.push_back(a[i]);
for(int i=0;i<q;i++)b.push_back(v[i]);
sort(all(b));
b.resize(unique(all(b))-b.begin());
int m = sz(b);
for(int i=0;i<n;i++)a[i] = lower_bound(all(b),a[i])-b.begin()+1;
for(int i=0;i<q;i++)v[i] = lower_bound(all(b),v[i])-b.begin()+1;
for(int i=0;i<n;i++)f[a[i]]++;
for(int i=1;i<=m;i++)f[i]+=f[i-1];
for(int i=0;i<n;i++)upd1(1,1,m,a[i],i+1);
for(int i=0;i<q;i++){
upd1(1,1,m,a[x[i]],-x[i]-1);
upd1(1,1,m,v[i],x[i]+1);
upd2(1,a[x[i]],m,1,m,1);
upd2(1,v[i],m,1,m,-1);
a[x[i]] = v[i];
answer[i] = t[1];
}
return answer;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |