Submission #408767

#TimeUsernameProblemLanguageResultExecution timeMemory
408767AmineWeslatiBubble Sort 2 (JOI18_bubblesort2)C++14
0 / 100
9043 ms2828 KiB
#include <bits/stdc++.h> #include "bubblesort2.h" using namespace std; typedef long long ll; typedef vector<int>vi; #define pb push_back #define sz(v) (int)v.size() #define all(x) begin(x),end(x) #define FOR(i,a,b) for(int i=a; i<b; i++) #define ROF(i,a,b) for(int i=b-1; i>=a; i--) //--------------------------------------------// int N,Q; vi a; const int MX=5e4+10; void ckmax(int &x, int y){x=max(x,y);} vi t(MX,0); void upd(int idx){ int i=idx; for(;i<MX; i+=i&-i){ t[i]++; } } int get(int idx){ int i=idx; int ans=0; for(;i;i-=i&-i) ans+=t[i]; return ans; } vi countScans(vi A,vi X,vi V){ N=sz(A); Q=sz(X); a.assign(all(A)); vi temp; temp.assign(all(a)); sort(all(temp)); int cnt=0; unordered_map<int,int>mp; for(int x: temp) if(!mp.count(x)) mp[x]=++cnt; FOR(i,0,N) a[i]=mp[a[i]]; vi ans(Q); FOR(idx,0,Q){ a[X[idx]]=V[idx]; vi st,vec(N); ROF(i,0,N){ while(sz(st) && st.back()<a[i]) st.pop_back(); if(!sz(st)){ vec[i]=(i!=N-1); } else{ if(st.back()==i+1 && !vec[st.back()]) vec[i]=0; else vec[i]=vec[st.back()]+1; } st.pb(i); } t.assign(N+1,0); FOR(i,0,N){ ckmax(vec[i],get(N)-get(a[i])); upd(a[i]); } ans[idx]=0; FOR(i,0,N) ckmax(ans[idx],vec[i]); } return ans; } /* 4 2 1 2 3 4 0 3 2 1 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...