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;
queue <long long> q[2][1000000];
long long n, idx, a[1000000], ans, k, kx, xx[1000000], m;
int alg (long long x) {
    int num = 0;
    for (int i = x; i >= 1; i -= (i&(-i)) ) num += xx[i];
    return num;
}
void upd (int x, int y) {
    for (int i = x; i <= 2*n;  i += (i&(-i)) ) xx[i] += y;
}
//int main() {
//	cin>>n;
//	for (int i = 1; i <= 2*n; i++) cin>>a[i];
long long count_swaps(std::vector <int> v) {
	n = v.size();
	for (long long i = 0; i < n; i++) v[i] = a[i+1];
	for (int i = 1; i <= n; i++) upd(i,1);
	for(int i = 1; i <= n; i++) {
	    if (a[i] < 0) {
	    	if (q[1][abs(a[i])].empty()) q[0][abs(a[i])].push(i);  
			else {
				ans += alg(i-1) - alg(q[1][abs(a[i])].front()-1);
				upd(i, -1);
				upd(q[1][abs(a[i])].front(), 1);
				q[1][abs(a[i])].pop();
				}
			}
		else {
			if (q[0][a[i]].empty()) q[1][a[i]].push(i);
			else {
				ans += alg(i-1) - alg(q[0][a[i]].front()-1) - 1;
				upd(i, -1);
				upd(q[0][a[i]].front(), 1);
				q[0][a[i]].pop();
			}
		}
	}
	return ans;
}
| # | 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... |