Submission #292325

#TimeUsernameProblemLanguageResultExecution timeMemory
292325Ruba_KArranging Shoes (IOI19_shoes)C++14
0 / 100
258 ms273272 KiB
#include "shoes.h" #include<bits/stdc++.h> using namespace std ; #define ll long long const int N = 2e5 + 2 ; deque<int>pos[N]; struct BIT { vector<ll> v; int sz; explicit BIT(int n) { v.resize(n + 1); sz = n + 1; } //gets sum of range [0, i] ll get(int i) { ll ret = 0; for (++i; i; i -= i & -i) ret += v[i ]; return ret; } void update(int i, ll x) { for (++i; i <= sz; i += i & -i) v[i ] += x; } ll query(int st, int en) { return get(en) - get(st - 1); } }; int finish[N * 4]; long long count_swaps(vector<int> v) { int n = v.size() / 2; for(int i = 0 ; i < n * 2; i ++){ pos[n + v[i]].push_back(i); } long long ans = 0 ; BIT bit (n * 2); for(int i = 0 ;i < n * 2 ; i ++ ){ if(finish[i])continue ; int ab = -v[i] , p = pos[ab + n].front(); finish[p]++; pos[ab + n].pop_front(); pos[v[i] + n].pop_front(); int betwen = bit.query(i + 1 , p + 1); ans += p - i - 1 - betwen + (v[i] > 0 ? 1 : 0); bit.update(p + 1 , 1 ); } 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...