제출 #1341584

#제출 시각아이디문제언어결과실행 시간메모리
1341584Jawad_Akbar_JJArranging Shoes (IOI19_shoes)C++20
50 / 100
1095 ms7856 KiB
#include <iostream>
#include <vector>

using namespace std;
const int Mx = 1<<17;
int seen[Mx], ft[Mx];
vector<int> vec[Mx];

void Add(int i, int v){
	for (; i; i -= i & -i)
		ft[i] += v;
}

int get(int i, int ans = 0){
	for (; i < Mx; i += i & -i)
		ans += ft[i];
	return ans;
}

long long count_swaps(vector<int> v){
	long long n = v.size() / 2, ans = 0;
	
	for (int i=0;i<n+n;i++){
		int s = abs(v[i]);
		if (vec[s].size() == 0 or v[vec[s].back()] == v[i]){
			Add(i+1, 1);
			vec[s].push_back(i);
		}
		else{
			int j = vec[s][0];
			ans += i - j - (v[i] > 0);
			Add(j+1, -1);
			ans -= get(j+1);
			vec[s].erase(begin(vec[s]));
		}
	}
	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...