제출 #1152051

#제출 시각아이디문제언어결과실행 시간메모리
1152051brover29Bubble Sort 2 (JOI18_bubblesort2)C++20
0 / 100
201 ms980 KiB
#include "bubblesort2.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const ll N=1e6+29; vector<int>B; ll st[4*N]; void build(ll v,ll l,ll r){ if(l==r){ st[v]=0; return; } ll mid=(r+l)>>1; build(v*2,l,mid); build(v*2+1,mid+1,r); st[v]=0; }void upd(ll v,ll l,ll r,ll pos){ if(l==r){ st[v]++; return; } ll mid=(r+l)>>1; if(pos<=mid)upd(v*2,l,mid,pos); else upd(v*2+1,mid+1,r,pos); st[v]=st[v*2]+st[v*2+1]; }ll get(ll v,ll l,ll r,ll x,ll y){ if(y<l||r<x||x>y)return 0; if(x<=l&&r<=y){ return st[v]; } ll mid=(r+l)/2; return (get(v*2,l,mid,x,y)+get(v*2+1,mid+1,r,x,y)); }map<ll,ll>mp; set<ll>s; ll timer,res[N]; vector<int> countScans(vector<int> A,vector<int> X,vector<int> V){ ll Q=X.size(); for(ll i:A)s.insert(i); vector<int> answer; for (int j=0;j<Q;j++) { s.insert(V[j]); ll mx=0; }for(ll i:s){ mp[i]=++timer; }for(auto &i:A)i=mp[i]; for(ll i=0;i<A.size();i++){ res[i]=(get(1,1,1e6,A[i]+1,1e6)); upd(1,1,1e6,A[i]); } for (int j=0;j<Q;j++) { A[X[j]]=mp[V[j]]; ll mx=0; res[X[j]]=0; for(ll i=0;i<X[j];i++){ if(A[i]>A[X[j]])res[X[j]]++; } for(ll i=X[j]+1;i<A.size();i++){ if(A[i]<A[X[j]])res[i]++; }for(ll i=0;i<A.size();i++){ mx=max(mx,res[i]); } answer.push_back(mx); } return answer; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...