This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e6 + 5;
int n;
int a[N], bit[N];
ll ans;
vector<int> pos[N][2];
void Update (int p, int v) {
for (int i = p; i < N; i += i & -i) bit[i] += v;
}
int Get (int p) {
int ret = 0;
for (int i = p; i >= 1; i -= i & -i) ret += bit[i];
return ret;
}
int Get (int l, int r) {
return Get(r) - Get(l - 1);
}
ll count_swaps (vector<int> S) {
n = S.size();
int j;
for (int i = 0, j = 3; i < n; i++, j += 3) {
a[j] = S[i];
Update(j, 1);
pos[abs(a[j])][a[j] < 0].push_back(j);
}
for (int i = 1; i <= n; i++) {
for (int j = 0; j < 2; j++) {
reverse(pos[i][j].begin(), pos[i][j].end());
}
}
n = j;
for (int i = 3; i <= n; i += 3) {
if (!a[i])
continue;
int t = (a[i] < 0);
int j = pos[abs(a[i])][t ^ 1].back();
pos[abs(a[i])][t ^ 1].pop_back();
pos[abs(a[i])][t].pop_back();
Update(j, -1);
a[j] = 0;
ans += (a[i] < 0 ? Get(i + 1, j) : Get(i, j));
}
return ans;
}
// signed main() {
// ios_base::sync_with_stdio(0);
// cin.tie(0);
//
// vector<int> S = {2, 1, -1, -2};
// cout << count_swaps(S);
//
// return 0;
// }
Compilation message (stderr)
shoes.cpp: In function 'll count_swaps(std::vector<int>)':
shoes.cpp:38:7: warning: 'j' is used uninitialized in this function [-Wuninitialized]
38 | n = j;
| ~~^~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |