Submission #1237111

#TimeUsernameProblemLanguageResultExecution timeMemory
1237111MuhammadSaramArranging Shoes (IOI19_shoes)C++20
100 / 100
224 ms272436 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; const int M = 2e5 + 1; int fen[M]; void modify(int p,int x) { while (p<M) fen[p]+=x,p+=p&-p; } int get(int p) { int ans=0; while (p) ans+=fen[p], p^=p&-p; return ans; } long long count_swaps(vector<int> a) { int n=a.size(); queue<int> ind[n+1][2]; for (int i=0;i<n;i++) modify(i+1,1); long long ans=0; for (int i=0;i<n;i++) { int x=abs(a[i]); ind[x][a[i]>0].push(i); if (min(ind[x][0].size(),ind[x][1].size())==1) { ans+=get(ind[x][0].front()), modify(ind[x][0].front()+1,-1); ans+=get(ind[x][1].front()), modify(ind[x][1].front()+1,-1); ind[x][0].pop(), ind[x][1].pop(); } } return ans; }
#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...