Submission #1290302

#TimeUsernameProblemLanguageResultExecution timeMemory
1290302kutomei3Arranging Shoes (IOI19_shoes)C++20
10 / 100
1 ms348 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;

long long count_swaps(vector<int> s) {
	int n = s.size() / 2;
	priority_queue<int, vector<int>, greater<int>> l[n + 3], r[n + 3];
	for (int i = 0; i < 2 * n; i++) {
		//cout << "LL";
		if (s[i] < 0) l[abs(s[i])].push(i);
		else r[s[i]].push(i);
	}
	long long ct = 0;
	vector<int> vis(2 * n + 1, 1);
	for (int i = 0; i < 2 * n; i++) {
		if (!vis[i]) continue;
		if (s[i] > 0) {
			int u = s[i];
			r[u].pop();
			//cout << "1 " << i << ' ' << l[u].top() << ' ' << l[u].top() - i << '\n';
			ct += l[u].top() - i; 
			vis[l[u].top()] = 0;
			l[u].pop();
		} 
		else {
			int u = abs(s[i]);
			l[u].pop();
			//cout << "2 " << i << ' ' << r[u].top() << ' ' << r[u].top() - i - 1 << '\n';
			ct += r[u].top() - i - 1;
			vis[r[u].top()] = 0;
			r[u].pop();
		}
	}
	return ct;
}
#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...