제출 #1356138

#제출 시각아이디문제언어결과실행 시간메모리
1356138tullArranging Shoes (IOI19_shoes)C++20
0 / 100
1096 ms344 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
struct Fenwick{
	int n;
	vector<int>a;
	Fenwick(int n):n(n),a(n+10){}
	void update(int i,int x){
		for(;i<=n;i+=i&-i){
			a[i]+=x;
		}
	}
	int query(int i){
		int res=0;
		for(;i>0;i-=i&-i){
			res+=a[i];
		}
		return res;
	}
	int range(int l,int r){
		return query(r)-query(l-1);
	}
};
long long count_swaps(vector<int> s) {
	int m=s.size();
	int n=m/2,x;
	Fenwick a(n);
	ll sum=0LL;
	vector<int>left(n+10),right(n+10),fnd(m+10);
	for(int i=1;i<=n;++i){
		if(s[i-1]<0){
			left[s[i-1]*-1]=i;
		}else{
			right[s[i-1]]=i;
		}
	}
	for(int i=1;i<=n;++i){
		x=s[i-1];
		if(fnd[x])continue;
		if(x<0){
			sum+=right[x]-left[x]+1-a.range(left[x],right[x]);
			a.update(right[x],1);
		}else{
			sum+=left[x]-right[x]-a.range(right[x],left[x]);
			a.update(left[x],1);
		}
		fnd[abs(x)]=1;
	}
	return sum;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…