Submission #1153298

#TimeUsernameProblemLanguageResultExecution timeMemory
1153298owoovoArranging Shoes (IOI19_shoes)C++20
10 / 100
1096 ms328 KiB
#include "shoes.h"
#include<bits/stdc++.h>
#define ll long long 
#define F first 
#define S second 
using namespace std;
ll bit[200010];
void modify(ll x,int p){
	while(p<200005){
		bit[p]+=x;
		p+=p&(-p);
	}
	return;
}
ll query(int p){
	ll ans=0;
	while(p){
		ans+=bit[p];
		p-=p&(-p);
	}
	return ans;
}
int id[200010],n,pos[200010],cnt;
ll count_swaps(vector<int> s) {
	ll ans=0;
	cnt=1;
	n=s.size()/2;
	for(int i=0;i<s.size();i++){
		id[s[i]+n]=i+1;
		if(id[-s[i]+n]){
			int now=abs(s[i]);
			pos[id[-now+n]]=cnt;
			pos[id[now+n]]=cnt+1;
			cnt+=2;
			id[now+n]=0;
			id[-now+n]=0;
		}
	}
	for(int i=1;i<=2*n;i++){
		ans+=query(2*n)-query(pos[i]);
		modify(1,pos[i]);
	}
	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...