Submission #1334673

#TimeUsernameProblemLanguageResultExecution timeMemory
1334673zhehanArranging Shoes (IOI19_shoes)C++20
0 / 100
0 ms344 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long

long long count_swaps(std::vector<signed> s) {
  int n = s.size();
  bool st4 = true;
  for (int i = 0; i < n / 2; ++i) {
    if (s[i] < 0 && s[i] != -s[i + n / 2]) {
      st4 = false;
    }
  }
  if (st4) {
    return (n / 2 - 1) * n / 2;
  }
  vector<bool> swapping(n, false);
  vector<int> parity(100000, 0);
  map<int, queue<int>> key;

  for (int i = 0; i < n; ++i) {
    if (s[i] < 0) {
      if (parity[abs(s[i])] == 1) {
        swapping[i] = true;
      }
    } else {
      if (parity[abs(s[i])] == 0) {
        swapping[i] = true;
        key[abs(s[i])].push(i);
      }
    }
    parity[abs(s[i])] = 1 - parity[abs(s[i])];
  }
  int swaps = 0;
  for (int i = 0; i < n; ++i) {
    if (s[i] < 0 && swapping[i]) {
      swaps += abs(key[abs(s[i])].front() - i);
      key[abs(s[i])].pop();
    }
  }
  return swaps;
}
#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...