Submission #1312995

#TimeUsernameProblemLanguageResultExecution timeMemory
1312995thieunguyenhuyArranging Shoes (IOI19_shoes)C++20
50 / 100
1096 ms2204 KiB
#ifndef hwe
	#include "shoes.h"
#endif

#include <bits/stdc++.h>
using namespace std;

#define POPCOUNT(n) (__builtin_popcountll((n)))
#define CLZ(n) (__builtin_clzll((n)))
#define CTZ(n) (__builtin_ctzll((n)))
#define LOG(n) (63 - __builtin_clzll((n)))
#define BIT(n, i) (((n) >> (i)) & 1ll)
#define MASK(i) (1ll << (i))
#define FLIP(n, i) ((n) ^ (1ll << (i)))
#define ON(n, i) ((n) | MASK(i))
#define OFF(n, i) ((n) & ~MASK(i))

#define Int __int128
#define fi first
#define se second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<long long, long long> pll;
typedef pair<long long, int> pli;
typedef pair<int, long long> pil;
typedef vector<pair<int, int>> vii;
typedef vector<pair<long long, long long>> vll;
typedef vector<pair<long long, int>> vli;
typedef vector<pair<int, long long>> vil;

template <class T1, class T2> bool maximize(T1 &x, T2 y) {
	if (x < y) {
		x = y;
		return true;
	}
	return false;
}
template <class T1, class T2> bool minimize(T1 &x, T2 y) {
	if (x > y) {
		x = y;
		return true;
	}
	return false;
}

template <class T> void remove_duplicate(vector<T> &ve) {
	sort (ve.begin(), ve.end());
	ve.resize(unique(ve.begin(), ve.end()) - ve.begin());
}

mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
long long random(long long l, long long r) {
	return uniform_int_distribution<long long>(l, r)(rng);
}
template <class T> T random(T r) {
	return rng() % r;
}

const int N = 1e6 + 5;
const int MOD = 1e9 + 7;
const int inf = 1e9;
const long long INF = 1e18;

ll count_swaps(vector<int> s) {
	int n = s.size() / 2;
	vector<int> pos(n + 1, -1); int ans = 0;
	for (int _ = 0; _ < n; ++_) {
		int p = _ * 2;
		for (int i = p + 1; i < s.size(); ++i) {
			if (s[i] == -s[p]) {
				for (int j = i; j > p + 1; --j) swap(s[j], s[j - 1]), ++ans;
				break;
			}
		}
		if (s[p] > 0) swap(s[p], s[p + 1]), ++ans;
	}

	return ans;
}

#ifdef hwe
signed main() {
	int n; cin >> n;

	vector<int> s(2 * n);
	for (auto &x : s) cin >> x;

	cout << count_swaps(s) << '\n';
	return 0;
}
#endif
#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...