Submission #283907

#TimeUsernameProblemLanguageResultExecution timeMemory
283907sofapudenArranging Shoes (IOI19_shoes)C++14
45 / 100
111 ms71676 KiB
#include "shoes.h"
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ll count_swaps(vector<int> s) {
	int n = s.size()/2;
	vector<pair<int, queue<int>>> v(n+2, {0,{}});
	ll ans = 0;
	int cn = 0;
	int pairs = 0;
	for(int i = 0; i < 2*n; ++i){
		if(s[i] < 0){
			if(v[abs(s[i])].first <= 0){
				v[abs(s[i])].second.push(cn);
				v[abs(s[i])].first = -1;
				cn++;
			}
			else{
				auto x = v[abs(s[i])].second.front();
				v[abs(s[i])].second.pop();
				if(v[abs(s[i])].second.empty()){
					v[abs(s[i])].first = 0;
				}
				ans+=cn-x;
				ans+=max(0, x-pairs);
				pairs++;
			}	
		}
		else{
			if(v[abs(s[i])].first >= 0){
				v[abs(s[i])].second.push(cn);
				v[abs(s[i])].first = 1;
				cn++;
			}
			else{
				auto x = v[abs(s[i])].second.front();
				v[abs(s[i])].second.pop();
				if(v[abs(s[i])].second.empty()){
					v[abs(s[i])].first = 0;
				}
				ans+=cn-x-1;
				ans+=max(0, x-pairs);
				pairs++;
			}
		}
	}
	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...