| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1311435 | putuputu | Arranging Shoes (IOI19_shoes) | C++20 | 0 ms | 0 KiB |
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
long long count_swaps(vector<int>a){
long long m=a.size();
long long s=0;
long long n=m/2;
//bool ok=true;
long long cnt=0;
for(int i=0; i<n; i++){
if(!(a[i]<0 && abs(a[i])==a[i+n] && a[i+n]>0)){
cnt++;
}
// if(a[i]!=a[i+n]){
// ok=false;
// }
}
if(cnt==0){
return(n*(n-1)/2);
}
bool kk=true;
int g=abs(a[0]);
for(int i=0; i<m; i++){
if(abs(a[i])!=g){
kk=false;
}
}
if(kk==true){
vector<int> lp;
lp.reserve(n);
for(int i=0; i<m; i++){
if(a[i]<0){
lp.push_back(i);
}
}
long long sw=0;
for(int k=0; k<n; k++){
sw+=llabs(lp[k]-(2*k)));
}
return sw;
}
for(int pos=0; pos<m; pos+=2){
if(a[pos]>0){
int nl=-a[pos];
int j=pos+1;
while(j<m and a[j]!=nl){
j++;
}
while(j>pos){
swap(a[j], a[j-1]);
j--;
s++;
}
}
int nr=-a[pos];
int j=pos+1;
while(j<m and a[j]!=nr){
j++;
}
while(j>pos+1){
swap(a[j], a[j-1]);
j--;
s++;
}
}
return s;
}
