제출 #724230

#제출 시각아이디문제언어결과실행 시간메모리
724230badontArranging Shoes (IOI19_shoes)C++17
45 / 100
47 ms13992 KiB
#include "shoes.h"
#include <cmath>
#include <cstdlib> 
#include <cassert>

long long count_swaps(std::vector<int> s) {
	using ll = long long;
	using namespace std;
	ll n = (int)s.size(); n /= 2;	

	vector<vector<ll>> pos(n, vector<ll>()), neg(n, vector<ll>());	

	for (int i = 0; i < 2 * n; i++) {
		ll x = abs(s[i]);
		if (s[i] < 0) {
			neg[x - 1].push_back(i);
		} else {
			pos[x - 1].push_back(i);
		}
	}

	ll op_1 = 0, op_2 = 0;
	for (int i = 0; i < n; i++) {
		assert(neg[i].size() == pos[i].size());
		for (int j = 0; j < (int)neg[i].size(); j++) {
			int x = neg[i][j], y = pos[i][j];
			op_1 += abs(x - y) - 1;
			if (x > y) op_2++;
		}
	}

	op_1 /= 2;

	return op_1 + op_2;
}
#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...