Submission #876369

#TimeUsernameProblemLanguageResultExecution timeMemory
876369TahirAliyevArranging Shoes (IOI19_shoes)C++17
100 / 100
187 ms13644 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> #define oo 1e9 const int MAX = 2e5 + 5; int tree[MAX]; void update(int pos, int val){ for(int i = pos; i <= MAX; i += (i) & (-i)){ tree[i] += val; } } int ask(int l, int r){ if(l != 1) return ask(1 , r) - ask(1 , l - 1); int res = 0; for(int i = r; i > 0; i -= (i) & (-i)){ res += tree[i]; } return res; } bool V[MAX]; int nxt[MAX]; long long count_swaps(vector<int> s) { int n = s.size(); set<pii> st; for(int i = 0; i < n; i++){ st.insert({s[i], i}); update(i + 1, 1); } ll ans = 0; for(int i = 0; i < n; i++){ if(st.find({s[i], i}) == st.end()) continue; int j = (*st.lower_bound({-s[i], i})).second; if(i + 2 <= j){ ans += ask(i + 2, j); } if(s[i] > 0){ ans++; } update(i + 1, -1); update(j + 1, -1); st.erase({s[i], i}); st.erase({-s[i], j}); } 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...