제출 #1341631

#제출 시각아이디문제언어결과실행 시간메모리
1341631vjudge1Arranging Shoes (IOI19_shoes)C++20
10 / 100
1 ms344 KiB
#include "shoes.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int M = 2e5 + 1;

int fen[M];

void modify(int p, int x)
{
	while (p<M)
		fen[p]+=x, p+=p&-p;
}

int get(int p)
{
	int ans=0;
	while (p)
		ans+=fen[p], p^=p&-p;
	return ans;
}

ll count_swaps(vector<int> v)
{
	int n=v.size()/2, ind[n+1];
	for (int i=0;i<n*2;i++)
	{
		if (v[i]>0) v[i]+=n;
		else v[i]*=-1;
		ind[v[i]]=i, modify(i+1,1);
	}
	ll ans=0;
	for (int i=0;i<n*2;i++)
	{
		if (v[i]<=n)
		{
			if (ind[v[i]+n]<i) continue;
			ans+=get(ind[v[i]+n])-get(i+1), modify(ind[v[i]+n]+1,-1);
		}
		else
		{
			if (ind[v[i]-n]<i) continue;
			ans+=get(ind[v[i]-n])-get(i+1)+1, modify(ind[v[i]-n]+1,-1);
		}
	}
	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...