제출 #1367580

#제출 시각아이디문제언어결과실행 시간메모리
1367580temurbek1371Arranging Shoes (IOI19_shoes)C++20
100 / 100
426 ms146820 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
long long count_swaps(vector<int> s){
	int n = s.size();
	vector<int> bit(n);
	auto add = [&](int ind){
		for(;ind<n;ind = ind|(ind+1))bit[ind]++;
	};
	auto get = [&](int ind){
		int sm = 0;
		for(;ind>=0;ind = (ind&(ind+1))-1)sm+=bit[ind];
		return sm;
	};
	map<int,deque<int>> mp;
	vector<bool> used(n,false);
	for(int i = 0;i<n;i++)mp[s[i]].push_back(i);
	long long ans =0 ;
	for(int i= 0;i<n;i++){
		// cout<<i<<endl;
		if(used[i])continue;
		if(s[i]<0){
			int nx = mp[-s[i]].front();
			mp[-s[i]].pop_front();
			mp[s[i]].pop_front();
			int deado = get(nx)-get(i);
			ans+=(nx-i-1-deado);
			used[nx]=1;
			add(nx);
		}
		else{
			int nx = mp[-s[i]].front();
			mp[s[i]].pop_front();
			mp[-s[i]].pop_front();
			int deado = get(nx)-get(i);
			ans+=(nx-i-deado);
			used[nx]=1;
			add(nx);
		}
	}
	// cout<<ans<<endl;
	return ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…