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 |
|
|
| 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 |