Submission #1305543

#TimeUsernameProblemLanguageResultExecution timeMemory
1305543ayazArranging Shoes (IOI19_shoes)C++20
10 / 100
1 ms344 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
#define isz(x) (int)x.size()

#define isz(x) (int)x.size()

const int sz = 2e5 + 100;
bool alone[sz];
long long count_swaps(std::vector<int> s) {
  int n = isz(s);
  if (n == 2) {
    return (s[0] > 0);
  }
  int res = 2e9;
  for (int mask = 0; mask < (1 << (n)); mask++) {
    vector<int> a = s;
    a.resize(n + 1);
    for (int i = 0; i < n; i++) {
      if (i > 0 && a[i - 1] + a[i] == 0) {
        alone[i] = false;
        continue;
      }
      if (i < n && a[i + 1] + a[i] == 0) {
        alone[i] = false;
        continue;
      }
      alone[i] = true;
    }
    int ans = 0;
    for (int i = 0; i < n; i++) {
      if (i > 0 && a[i - 1] + a[i] == 0) {
        alone[i] = false;
        continue;
      }
      if (i < n && a[i + 1] + a[i] == 0) {
        alone[i] = false;
        continue;
      }
      int d = 1e9;
      for (int j = n - 1; j >= 0; j--) {
        if (a[i] + a[j] == 0 && abs(d - i) >= abs(j - i)) {
          d = j;
        }
      }
      if (mask >> i & 1) {
        int v = a[d];
        a.erase(a.begin() + d);
        if (d < i)
          a.insert(a.begin() + i, v);
        else
          a.insert(a.begin() + 1 + i, v);
      } else {
        int v = a[i];
        a.erase(a.begin() + i);
        if (d > i)
          a.insert(a.begin() + d, v);
        else
          a.insert(a.begin() + 1 + d, v);
      }
      ans += abs(d - i);
    }
    for (int i = 0; i < n; i += 2) {
      ans += (a[i] > 0);
    }
    res = min(ans, res);
  }
  return res;
}
#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...