| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1355352 | Charizard2021 | 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> s){
map<int, set<int> > mp;
int n = (int)s.size()/2;
vector<int> v;
for(int i = 0; i < 2 * n; i++){
mp[s[i]].insert(i);
if(s[i] > 0){
v.push_back(s[i]);
}
}
sort(v.begin(), v.end());
int ans = 1e9;
do{
map<int, set<int> > mp2 = mp;
int sum = 0;
for(int j = 0; j < (int)v.size(); j++){
int idx = *mp2[-v[j]].begin();
int idx2 = *mp2[v[j]].begin();
int val1 = abs(idx - (2 * j));
int val2 = abs(idx2 - (2 * j + 1));
mp2[v[j]].erase(idx2);
mp2[-v[j]].erase(idx);
sum += val1 + val2;
}
sum /= 2;
ans = min(ans, sum);
} while(next_permutation(v.begin(), v.end()));
return ans;
}
int main(){
int n;
cin >> n;
vector<int> s(2 * n);
for(int i = 0; i < 2 * n; i++){
cin >> s[i];
}
cout << count_swaps(s) << "\n";
}
