이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shoes.h"
#include <bits/stdc++.h>
#define MAXN 100005
using namespace std;
int x,a[MAXN],n;
inline int lowbit(int x)
{
	return x&(-x);
}
void add(int x)
{
	while(x<=n)
	{
		a[x]++;
		x+=lowbit(x);
	}
	return;
}
int pre(int x)
{
	int ans = 0;
	while(x>0)
	{
		ans+=a[x];
		x-=lowbit(x);
	}
	return ans;
}
int query(int x,int y)
{
	return pre(y)-pre(x-1);
}
vector<vector<int> > rpos(MAXN);
bool vis[MAXN];
long long count_swaps(std::vector<int> s) {
		
	n = s.size();
	
	s.push_back(0);
	for(int i=n;i>=1;i--)
		s[i]=s[i-1];
	
	for(int i=1;i<=n;i++)
		if(s[i]>0)
			rpos[s[i]].push_back(i);	
		
	int sum=0,cnt=0;
	for(int i=1;i<=n;i++)
	{
		if(s[i]<0)
		{
			int ss = -s[i];
			sum+=i+query(i+1,n)-1-cnt;
			add(i);
			for(int j=0;j<(int)rpos[ss].size();j++)
			{
				int pos = rpos[ss][j];
				if(vis[pos])continue;
				vis[pos]=1;
				//cout<<i<<" "<<pos<<endl;
				sum+=pos-(cnt+2)+query(pos+1,n);
				add(pos);
				break;
			}
			cnt+=2;
		}
	}
	return sum;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |