제출 #420522

#제출 시각아이디문제언어결과실행 시간메모리
420522SSRSArranging Shoes (IOI19_shoes)C++14
30 / 100
113 ms4776 KiB
#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000;
long long count_swaps(vector<int> S){
  int n = S.size() / 2;
  assert(n <= 8);
  vector<int> p;
  for (int i = 0; i < n * 2; i++){
    if (S[i] > 0){
      p.push_back(S[i]);
    }
  }
  sort(p.begin(), p.end());
  int ans = INF;
  while (true){
    map<int, queue<int>> Q;
    for (int i = 0; i < n; i++){
      Q[-p[i]].push(i * 2);
      Q[p[i]].push(i * 2 + 1);
    }
    vector<int> p2(n * 2);
    for (int i = 0; i < n * 2; i++){
      p2[i] = Q[S[i]].front();
      Q[S[i]].pop();
    }
    int cnt = 0;
    for (int i = 0; i < n * 2; i++){
      for (int j = i + 1; j < n * 2; j++){
        if (p2[i] > p2[j]){
          cnt++;
        }
      }
    }
    ans = min(ans, cnt);
    if (!next_permutation(p.begin(), p.end())){
      break;
    }
  }
  return ans;
}
#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...