#include <cassert>
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
long long count_swaps(vector<int> s) {
long long n=s.size()/2;
if(n==1){
if(s[0]<0 && s[1]>0){
return 0;
}
else return 1;
}
long long cnt=0;
for(int i=0; i<n; i++){
if(!(abs(s[i])==s[i+n] && s[i]<0)){
cnt=1;
break;
}
}
if(cnt==0){
return (n*(n-1)/2);
}
int c[2*n];
fill(c,c+2*n,0);
if(n<=8){
int ans=0;
for(int i=0; i<2*n-1; i++){
if(abs(s[i])==abs(s[i+1]) && c[i]==0 && c[i+1]==0){
if(s[i]<0 && s[i+1]>0){
c[i]=1;
c[i+1]=1;
}
else if(s[i]>0 && s[i+1]<0){
ans++;
swap(s[i],s[i+1]);
c[i]=1;
c[i+1]=1;
}
}
}
int p=-1;
long long bati=1e18;
for(int i=0; i<2*n; i++){
if(c[i]==0 && s[i]<0){
for(int j=0; j<2*n; j++){
if(c[j]==0 && s[j]>0 && s[j]==abs(s[i])){
if(bati>abs(j-i)){
p=j;
bati=abs(j-i);
}
}
}
}
for(int j=max(p,i); j>min(p,i); j--){
swap(s[j],s[j+1]);
}
ans+=bati;
}
return ans;
}
return 0;
//return 1;
}
| # | 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... |