Submission #1341591

#TimeUsernameProblemLanguageResultExecution timeMemory
1341591vjudge1Arranging Shoes (IOI19_shoes)C++20
0 / 100
1095 ms344 KiB
#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];
	return ans;
}

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