Submission #1152047

#TimeUsernameProblemLanguageResultExecution timeMemory
1152047brover29Bubble Sort 2 (JOI18_bubblesort2)C++20
0 / 100
123 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;
		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...