제출 #1308642

#제출 시각아이디문제언어결과실행 시간메모리
1308642vtnooBubble Sort Machine (JOI25_bubble)C++20
100 / 100
1183 ms85820 KiB
#include <bits/stdc++.h> #define pb push_back #define fst first #define snd second #define fore(i,a,b) for(int i=a,pao=b;i<pao;++i) #define SZ(x) ((int)x.size()) #define ALL(x) x.begin(),x.end() #define me(a,v) memset((a),(v),sizeof(a)) #define FIN ios::sync_with_stdio(0);cin.tie(0);cout.tie(0) using namespace std; typedef long long ll; typedef pair<ll,ll> ii; typedef vector<ll> vi; const int MAXN=5e5+5; ll A[MAXN],sum[MAXN*4],tam[MAXN*4]; vector<ii>ini[MAXN],fin[MAXN]; int n; void upd(int p,int x,int v=1,int s=0,int e=n-1){ if(s==e){ sum[v]+=x; tam[v]++; return; } int m=(s+e)/2; if(p<=m)upd(p,x,v*2,s,m); else upd(p,x,v*2+1,m+1,e); sum[v]=sum[v*2]+sum[v*2+1]; tam[v]=tam[v*2]+tam[v*2+1]; } ll kth_sum(ll k,int v=1,int s=0,int e=n-1){ if(tam[v]==0)return 0; if(s==e){ ll x=sum[v]/tam[v]; return x*k*1ll; } int m=(s+e)/2; if(k<=tam[v*2])return kth_sum(k,v*2,s,m); else return sum[v*2]+kth_sum(k-tam[v*2],v*2+1,m+1,e); } int main(){FIN; cin>>n; vi compress; fore(i,0,n){ cin>>A[i]; compress.pb(A[i]); } sort(ALL(compress)); compress.erase(unique(ALL(compress)),compress.end()); fore(i,0,n){ A[i]=lower_bound(ALL(compress),A[i])-compress.begin(); } int Q;cin>>Q; int lim=0,C=0; while(Q--){ int t;cin>>t; if(t==1)lim++; else{ int l,r;cin>>l>>r; l--;r--; ini[min(n-1,l+lim-1)].pb({l,C}); fin[min(n-1,r+lim)].pb({r+1,C}); C++; } } vi ans(C,0); //~ cout<<"HOLA"<<endl; fore(i,0,n){ upd((int)A[i],(int)compress[A[i]]); for(auto[j,idx]:ini[i]){ ans[idx]-=kth_sum(j); //~ cout<<"RESTA :"<<idx<<" "<<ans[idx]<<endl; } for(auto[j,idx]:fin[i]){ ans[idx]+=kth_sum(j); //~ cout<<"SUMA :"<<idx<<" "<<ans[idx]<<endl; } } //~ cout<<"HOLAA"<<endl; fore(i,0,C)cout<<ans[i]<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...