Submission #1279056

#TimeUsernameProblemLanguageResultExecution timeMemory
1279056gazizmadi11Arranging Shoes (IOI19_shoes)C++20
10 / 100
1 ms348 KiB
#include <bits/stdc++.h> #include "shoes.h" #define pb push_back // #define pf push_front // #define F first // #define S second // #define all(v) v.begin(),v.end() // #define pii pair<int,int> #define tm (tl+tr)/2 #define TL v+v, tl, tm #define TR v+v+1, tm+1, tr #define DA l <= tl && tr <= r #define NE r < tl || tr < l // #define double long double // #define int long long using namespace std; const int N=2e5+7; // const int mod=998244353; // const int inf=2e9; int n; int t[N*4]; int get(int x, int v=1, int tl=1, int tr=n){ if(tl == tr)return t[v]; if(x <= tm)return get(x, TL)+t[v]; else return get(x, TR)+t[v]; } void upd(int l, int r, int v=1, int tl=1, int tr=n){ if(DA){ t[v]++; return; } if(NE)return; upd(l, r, TL); upd(l, r, TR); } long long count_swaps(vector<int>S){ n=S.size(); vector<int>a[S.size()+1]; vector<int>b[S.size()+1]; long long ans=0; for(int i=0; i < S.size(); i++){ int x = S[i]; if(x > 0){ if(a[x].size()){ ans+=max(0, i+1-a[x].back()-1-get(a[x].back())); upd(a[x].back(), i+1); a[x].pop_back(); } else b[x].pb(i+1); } else{ x=abs(x); if(b[x].size()){ ans+=max(0, i+1-b[x].back()-get(b[x].back())); upd(b[x].back(), i+1); b[x].pop_back(); } else a[x].pb(i+1); } } return ans; } // void solve(){ // } // signed main(){ // ios_base::sync_with_stdio(0); // cin.tie(0); // int dioz=1; // cin >> dioz; // while(dioz--)solve(); // return 0; // }
#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...