Submission #701132

#TimeUsernameProblemLanguageResultExecution timeMemory
701132mychecksedadArranging Shoes (IOI19_shoes)C++17
45 / 100
84 ms72492 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int N = 1e6;

int t[N], n;
void add(int v){
	while(v > 0){
		t[v]++;
		v -= (v&-v);
	}
}
int get(int v){
	int res=0;
	while(v <= n*2){
		res+=t[v];
		v+=v&-v;
	}
	return res;
}

long long count_swaps(vector<int> s) {
	long long ans = 0, c = 0;
	
	n = s.size()/2;

	deque<int> pos[n + 1];
	vector<int> A (s.size());

	for(int i = 0; i <= 2*n; ++i) t[i] = 0;

	for(int i = 0; i < 2*n; ++i){
		if(s[i] < 0){
			pos[abs(s[i])].pb(2*c);
			A[i] = 2*c;			
			c++;
		}
	}
	for(int i = 0; i < 2*n; ++i){
		if(s[i] > 0){
			int p = pos[s[i]].front() + 1;
			pos[s[i]].pop_front();
			A[i] = p;
		}
	}
	for(int i = 0; i < 2*n; ++i){
		int p = get(A[i] + 1);
		ans += p;
		add(A[i] + 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...