이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct fenwickTree {
int n;
vector<int> d;
void add(int i, int x) {
i++;
for( ; i <= n ; i += (i & (-i)))
d[i] += x;
}
int sum(int a) {
a++;
int res = 0;
for( ; a > 0 ; a -= (a & (-a)))
res += d[a];
return res;
}
fenwickTree(int _n) {
n = _n;
d.resize(n + 3, 0);
for(int i = 0 ; i < n ; i++)
add(i, 1);
}
};
int n;
fenwickTree FT(200007);
vector<int> pos[200007];
bool del[200007];
long long count_swaps(std::vector<int> s) {
ll res = 0;
n = s.size() / 2;
for(int i = 0 ; i < 2 * n ; i++)
pos[s[i] + n].push_back(i);
for(int i = 0 ; i< 200007 ; i++)
reverse(pos[i].begin(), pos[i].end());
for(int i = 0 ; i < 2 * n ; i++) {
if(del[i])
continue;
if(s[i] > 0)
res++;
FT.add(i, -1);
int other = pos[-s[i] + n].back();
pos[-s[i] + n].pop_back();
del[other] = del[i] = 1;
pos[s[i] + n].pop_back();
FT.add(other, -1);
res += FT.sum(other);
}
return res;
}
# | 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... |