Submission #1295146

#TimeUsernameProblemLanguageResultExecution timeMemory
1295146tudor_costinBubble Sort 2 (JOI18_bubblesort2)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int Nmax=1e6+5,inf=1e9; struct node { int cnt; int maxval; }; node unite(node st,node dr) { node ans; ans.cnt=st.cnt+dr.cnt; ans.maxval=max(st.maxval+dr.cnt,dr.maxval); return ans; } int repr[Nmax]; node aint[4*Nmax]; set<int> poz[Nmax]; void build(int nod,int l,int r) { if(l==r) { if(repr[l]==0) { aint[nod].cnt=poz[l].size(); aint[nod].maxval=-inf; } else { aint[nod].cnt=poz[l].size(); aint[nod].maxval=repr[l]; } return; } int mid=(l+r)/2; build(2*nod,l,mid); build(2*nod+1,mid+1,r); aint[nod]=unite(aint[2*nod],aint[2*nod+1]); return; } void update(int nod,int l,int r,int x,int val) { if(l==r) { if(val==0) { aint[nod].cnt=poz[l].size(); aint[nod].maxval=-inf; } else { aint[nod].cnt=poz[l].size(); aint[nod].maxval=val; } return; } int mid=(l+r)/2; if(x<=mid) update(2*nod,l,mid,x,val); else update(2*nod+1,mid+1,r,x,val); aint[nod]=unite(aint[2*nod],aint[2*nod+1]); return; } vector<int> countScans(vector<int> a,vector<int> x,vector<int> v) { int n=a.size(),q=x.size(); map<int,vector<pair<int,int>>> nrm; for(int i=0; i<n; i++) nrm[a[i]].push_back({i,0}); for(int i=0; i<q; i++) nrm[v[i]].push_back({i,1}); int nrc=0; for(auto [val,V]:nrm) { nrc++; for(auto [id,tip]:V) { if(tip==0) a[id]=nrc; else v[id]=nrc; } } for(int i=0;i<n;i++) poz[a[i]].insert(i+1); for(int i=1;i<=nrc;i++) { if(!poz[i].empty()) repr[i]=(*poz[i].rbegin()); } build(1,1,nrc); vector<int> ans(q,0); for(int i=0;i<q;i++) { int cur=a[x[i]]; poz[cur].erase(poz[cur].find(x[i]+1)); int nw,prv=repr[cur]; if(poz[cur].empty()) nw=0; else nw=(*poz[cur].rbegin()); update(1,1,nrc,cur,nw); repr[cur]=nw; poz[v[i]].insert(x[i]+1); nw=(*poz[v[i]].rbegin()); prv=repr[v[i]]; update(1,1,nrc,v[i],nw); repr[v[i]]=nw; ans[i]=aint[1].maxval-n; } return ans; } /*int main() { int n,q; cin>>n>>q; vector<int> a(n),x(q),v(q); for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<q;i++) cin>>x[i]>>v[i]; vector<int> ans=countScans(a,x,v); for(int x:ans) cout<<x<<'\n'; return 0; } 4 2 1 2 3 4 0 3 2 1 */

Compilation message (stderr)

/usr/bin/ld: /tmp/ccSMRJjW.o: in function `main':
grader.cpp:(.text.startup+0x189): undefined reference to `countScans(std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status