Submission #1298657

#TimeUsernameProblemLanguageResultExecution timeMemory
1298657adiatArranging Shoes (IOI19_shoes)C++20
50 / 100
1096 ms155144 KiB







#include<bits/stdc++.h>
using namespace std;
#include "shoes.h"
#define ll long long
long long count_swaps(std::vector<int> v) {
	ll ans =0;
	map<int,deque<int>> tag,rtag;
	multiset<int> s;
	for(int i=0; i<v.size(); i++)
	{
		tag[v[i]].push_back(i);
		s.insert(i);
	}
	while(!s.empty())
	{
		// cout<<s.size();
		auto x=s.begin();
		if(v[*x]<0 )
		{
			auto y=s.find(tag[-v[*x]][0]);
			tag[-v[*x]].pop_front();
			tag[v[*x]].pop_front();
			ans+=distance(x, y)-1;
			s.erase(x);
			s.erase(y);
		}
		else
		{
			auto y= s.find(tag[-v[*x]][0]);
			tag[-v[*x]].pop_front();
			tag[v[*x]].pop_front();
			ans+=distance(x, y);
			s.erase(x);
			s.erase(y);
		}
	}
	return ans;
}
//#include "shoes.h"
// #include <cstdio>
// #include <cassert>

// using namespace std;

// int main() {
// 	int n;
// 	assert(1 == scanf("%d", &n));
// 	vector<int> S(2 * n);
// 	for (int i = 0; i < 2 * n; i++)
// 		assert(1 == scanf("%d", &S[i]));
// 	fclose(stdin);

// 	long long result = count_swaps(S);

// 	printf("\n%lld\n", result);
// 	fclose(stdout);
// 	return 0;
// }
#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...