제출 #1152060

#제출 시각아이디문제언어결과실행 시간메모리
1152060brover29Bubble Sort 2 (JOI18_bubblesort2)C++20
38 / 100
270 ms2812 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++) { ll mx=0; V[j]=mp[V[j]]; res[X[j]]=0; for(ll i=0;i<X[j];i++){ if(A[i]>V[j])res[X[j]]++; } for(ll i=X[j]+1;i<A.size();i++){ if(A[i]<A[X[j]]&&V[j]<A[i]) res[i]--; else if(A[i]>A[X[j]]&&V[j]>A[i]) res[i]++; }for(ll i=0;i<A.size();i++){ mx=max(mx,res[i]); } A[X[j]]=V[j]; answer.push_back(mx); } return answer; } //int readInt(){ // int i; // if(scanf("%d",&i)!=1){ // fprintf(stderr,"Error while reading input\n"); // exit(1); // } // return i; //} // //int main(){ // int N,Q; // N=readInt(); // Q=readInt(); // // std::vector<int> A(N); // for(int i=0;i<N;i++) // A[i]=readInt(); // // std::vector<int> X(Q),V(Q); // for(int j=0;j<Q;j++){ // X[j]=readInt(); // V[j]=readInt(); // } // // std::vector<int> res=countScans(A,X,V); // // for(int j=0;j<int(res.size());j++) // printf("%d\n",res[j]); //}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...