#include<bits/stdc++.h>
using namespace std;
#include "shoes.h"
#define ll long long
long long count_swaps(std::vector<int> v) {
ll ans =0;
map<int,deque<int>> tag,rtag;
multiset<int> s;
for(int i=0; i<v.size(); i++)
{
tag[v[i]].push_back(i);
s.insert(i);
}
while(!s.empty())
{
// cout<<s.size();
auto x=s.begin();
if(v[*x]<0 )
{
auto y=s.find(tag[-v[*x]][0]);
tag[-v[*x]].pop_front();
tag[v[*x]].pop_front();
ans+=(*y-*x)-1;
s.erase(x);
s.erase(y);
}
else
{
auto y= s.find(tag[-v[*x]][0]);
tag[-v[*x]].pop_front();
tag[v[*x]].pop_front();
ans+=(*y-*x);
s.erase(x);
s.erase(y);
}
}
return ans;
}
//#include "shoes.h"
// #include <cstdio>
// #include <cassert>
// using namespace std;
// int main() {
// int n;
// assert(1 == scanf("%d", &n));
// vector<int> S(2 * n);
// for (int i = 0; i < 2 * n; i++)
// assert(1 == scanf("%d", &S[i]));
// fclose(stdin);
// long long result = count_swaps(S);
// printf("\n%lld\n", result);
// fclose(stdout);
// return 0;
// }
| # | 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... |