Submission #25851972


Source Code Expand

#include <bits/stdc++.h>

using namespace std;
using vi = vector<int>;

#define popcnt __builtin_popcount

#define FOR(i, m, n) for (int i = (m); (i) < (int)(n); ++(i))
#define FOR_R(i, m, n) for (int i = (int)(n)-1; (i) >= (int)(m); --(i))
#define all(x) x.begin(), x.end()

int main(){
  int N, K; cin >> N >> K;
  vi A(N);
  FOR(i, 0, N){
    cin >> A[i];
    --A[i];
  }
  int INF = 1<<30;
  int ANS = INF;
  int half = K / 2;
  
  auto calc_cost = [&](auto I) -> int {
    /*
    0, 1, ..., K-1 のもとの位置 I[0], ..., I[K-1]
    が与えられたときの、最小操作回数をかえす
    */ 
    FOR(i, 0, K) if(I[i]==-1) return INF;
    int cost = 0;
    FOR(j, 0, K) FOR(i, 0, j) cost += I[i] > I[j];
    sort(all(I));
    FOR(i, 0, K) {
      int to = I[half] - half + i;
      cost += abs(to - I[i]);
    }
    return cost;
  };
  
  FOR(n, 0, N){
    // n の左側から使う場合の位置、右側から使う場合の位置
    vi LID(K, -1), RID(K, -1);
    FOR(i, 0, n + 1) LID[A[i]] = i;
    FOR_R(i, n, N) RID[A[i]] = i;
    
    FOR(s, 0, 1<<K){
      // 半分を左側の最寄り、半分を右側の最寄りから使う。
      // K/2 元集合は、O(2^K / K^{0.5}) 通り存在する。
      if (popcnt(s) != half) continue;
      vi I(K);
      FOR(i, 0, K) I[i] = (s & 1<<i ? LID[i] : RID[i]);
      ANS = min(ANS, calc_cost(I));
    }
  }
  cout << ANS << endl;
  return 0;
}

Submission Info

Submission Time
Task D - Pure Straight
User maspy
Language C++ (GCC 9.2.1)
Score 600
Code Size 1477 Byte
Status AC
Exec Time 615 ms
Memory 3604 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 69
Set Name Test Cases
Sample 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt
All 01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt, 02_permutation_01.txt, 02_permutation_02.txt, 02_permutation_03.txt, 02_permutation_04.txt, 02_permutation_05.txt, 02_permutation_06.txt, 02_permutation_07.txt, 02_permutation_08.txt, 02_permutation_09.txt, 02_permutation_10.txt, 02_permutation_11.txt, 02_permutation_12.txt, 02_permutation_13.txt, 02_permutation_14.txt, 02_permutation_15.txt, 03_rand_01.txt, 03_rand_02.txt, 03_rand_03.txt, 03_rand_04.txt, 03_rand_05.txt, 03_rand_06.txt, 03_rand_07.txt, 03_rand_08.txt, 03_rand_09.txt, 03_rand_10.txt, 03_rand_11.txt, 03_rand_12.txt, 03_rand_13.txt, 03_rand_14.txt, 03_rand_15.txt, 03_rand_16.txt, 03_rand_17.txt, 03_rand_18.txt, 03_rand_19.txt, 03_rand_20.txt, 03_rand_21.txt, 03_rand_22.txt, 03_rand_23.txt, 03_rand_24.txt, 03_rand_25.txt, 03_rand_26.txt, 03_rand_27.txt, 03_rand_28.txt, 03_rand_29.txt, 03_rand_30.txt, 03_rand_31.txt, 03_rand_32.txt, 03_rand_33.txt, 04_large_ans_01.txt, 04_large_ans_02.txt, 04_large_ans_03.txt, 04_large_ans_04.txt, 04_large_ans_05.txt, 04_large_ans_06.txt, 04_large_ans_07.txt, 04_large_ans_08.txt, 04_large_ans_09.txt, 04_large_ans_10.txt, 04_large_ans_11.txt, 04_large_ans_12.txt, 05_partition_01.txt, 05_partition_02.txt, 05_partition_03.txt, 05_partition_04.txt, 05_partition_05.txt, 05_partition_06.txt
Case Name Status Exec Time Memory
01_sample_01.txt AC 9 ms 3500 KiB
01_sample_02.txt AC 2 ms 3564 KiB
01_sample_03.txt AC 2 ms 3592 KiB
02_permutation_01.txt AC 2 ms 3564 KiB
02_permutation_02.txt AC 2 ms 3396 KiB
02_permutation_03.txt AC 2 ms 3564 KiB
02_permutation_04.txt AC 2 ms 3596 KiB
02_permutation_05.txt AC 2 ms 3592 KiB
02_permutation_06.txt AC 2 ms 3600 KiB
02_permutation_07.txt AC 2 ms 3404 KiB
02_permutation_08.txt AC 2 ms 3388 KiB
02_permutation_09.txt AC 2 ms 3540 KiB
02_permutation_10.txt AC 4 ms 3592 KiB
02_permutation_11.txt AC 5 ms 3520 KiB
02_permutation_12.txt AC 9 ms 3520 KiB
02_permutation_13.txt AC 13 ms 3504 KiB
02_permutation_14.txt AC 23 ms 3572 KiB
02_permutation_15.txt AC 33 ms 3452 KiB
03_rand_01.txt AC 2 ms 3572 KiB
03_rand_02.txt AC 2 ms 3572 KiB
03_rand_03.txt AC 2 ms 3524 KiB
03_rand_04.txt AC 2 ms 3524 KiB
03_rand_05.txt AC 3 ms 3568 KiB
03_rand_06.txt AC 5 ms 3548 KiB
03_rand_07.txt AC 8 ms 3596 KiB
03_rand_08.txt AC 12 ms 3568 KiB
03_rand_09.txt AC 18 ms 3548 KiB
03_rand_10.txt AC 26 ms 3400 KiB
03_rand_11.txt AC 49 ms 3468 KiB
03_rand_12.txt AC 84 ms 3548 KiB
03_rand_13.txt AC 139 ms 3464 KiB
03_rand_14.txt AC 254 ms 3400 KiB
03_rand_15.txt AC 269 ms 3504 KiB
03_rand_16.txt AC 284 ms 3600 KiB
03_rand_17.txt AC 277 ms 3568 KiB
03_rand_18.txt AC 279 ms 3400 KiB
03_rand_19.txt AC 281 ms 3604 KiB
03_rand_20.txt AC 278 ms 3392 KiB
03_rand_21.txt AC 285 ms 3456 KiB
03_rand_22.txt AC 292 ms 3572 KiB
03_rand_23.txt AC 262 ms 3456 KiB
03_rand_24.txt AC 532 ms 3524 KiB
03_rand_25.txt AC 553 ms 3508 KiB
03_rand_26.txt AC 615 ms 3600 KiB
03_rand_27.txt AC 521 ms 3528 KiB
03_rand_28.txt AC 595 ms 3508 KiB
03_rand_29.txt AC 535 ms 3460 KiB
03_rand_30.txt AC 597 ms 3508 KiB
03_rand_31.txt AC 535 ms 3508 KiB
03_rand_32.txt AC 583 ms 3572 KiB
03_rand_33.txt AC 586 ms 3572 KiB
04_large_ans_01.txt AC 301 ms 3604 KiB
04_large_ans_02.txt AC 157 ms 3464 KiB
04_large_ans_03.txt AC 301 ms 3400 KiB
04_large_ans_04.txt AC 154 ms 3524 KiB
04_large_ans_05.txt AC 299 ms 3412 KiB
04_large_ans_06.txt AC 149 ms 3600 KiB
04_large_ans_07.txt AC 299 ms 3524 KiB
04_large_ans_08.txt AC 151 ms 3600 KiB
04_large_ans_09.txt AC 300 ms 3468 KiB
04_large_ans_10.txt AC 154 ms 3508 KiB
04_large_ans_11.txt AC 296 ms 3452 KiB
04_large_ans_12.txt AC 153 ms 3464 KiB
05_partition_01.txt AC 297 ms 3464 KiB
05_partition_02.txt AC 155 ms 3464 KiB
05_partition_03.txt AC 295 ms 3412 KiB
05_partition_04.txt AC 153 ms 3508 KiB
05_partition_05.txt AC 295 ms 3568 KiB
05_partition_06.txt AC 151 ms 3568 KiB