Submission #48772317
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/modint>
namespace {
using ModInt [[maybe_unused]] = atcoder::modint998244353;
using Num [[maybe_unused]] = long long int;
using Vec [[maybe_unused]] = std::vector<Num>;
using Set [[maybe_unused]] = std::set<Num>;
using Mset [[maybe_unused]] = std::multiset<Num>;
using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;
template<typename T>
using Q [[maybe_unused]] = std::queue<T>;
template<typename T>
using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
}
void solve(std::istream& is, std::ostream& os) {
Num n, k;
is >> n >> k;
Vec ss(n, 2);
for(Num i{0}; i<k; ++i) {
Num a;
is >> a;
--a;
ss.at(a) -= 1;
}
Vec ts;
for(Num i{0}; i<n; ++i) {
for(Num j{0}; j<ss.at(i); ++j) {
ts.push_back(i);
}
}
Num size = static_cast<Num>(ts.size());
if ((size % 2) == 0) {
Num ans {0};
for(Num i{0}; i<size; i+=2) {
ans += std::abs(ts.at(i+1) - ts.at(i));
}
os << ans << "\n";
return;
}
Vec cumsum_f {0};
for(Num i{0}; (i+1)<size; i+=2) {
Num d = std::abs(ts.at(i+1) - ts.at(i));
cumsum_f.push_back(cumsum_f.back() + d);
}
Vec cumsum_b {0};
for(Num i{size-2}; i>=1; i-=2) {
Num d = std::abs(ts.at(i+1) - ts.at(i));
cumsum_b.push_back(cumsum_b.back() + d);
}
Num ans {1000000000000000000LL};
for(Num i{0}; i<size; ++i) {
if ((i % 2) == 0) {
Num d = cumsum_f.at(i / 2) + cumsum_b.at((size - i - 1) / 2);
ans = std::min(ans, d);
} else {
Num d = cumsum_f.at(i / 2) + cumsum_b.at((size - i - 1) / 2) + std::abs(ts.at(i+1) - ts.at(i-1));
ans = std::min(ans, d);
}
}
os << ans << "\n";
}
int main(void) {
solve(std::cin, std::cout);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | C - Socks 2 |
| User | zettsut |
| Language | C++ 20 (gcc 12.2) |
| Score | 350 |
| Code Size | 2044 Byte |
| Status | AC |
| Exec Time | 37 ms |
| Memory | 13148 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 350 / 350 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 02_consec_00.txt, 02_consec_01.txt, 02_consec_02.txt, 03_segreg_00.txt, 03_segreg_01.txt, 03_segreg_02.txt, 03_segreg_03.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3476 KiB |
| 00_sample_01.txt | AC | 1 ms | 3504 KiB |
| 00_sample_02.txt | AC | 1 ms | 3604 KiB |
| 01_random_00.txt | AC | 5 ms | 8868 KiB |
| 01_random_01.txt | AC | 9 ms | 13116 KiB |
| 01_random_02.txt | AC | 5 ms | 8920 KiB |
| 01_random_03.txt | AC | 9 ms | 13008 KiB |
| 01_random_04.txt | AC | 6 ms | 8920 KiB |
| 01_random_05.txt | AC | 9 ms | 13068 KiB |
| 01_random_06.txt | AC | 5 ms | 8880 KiB |
| 01_random_07.txt | AC | 9 ms | 13148 KiB |
| 01_random_08.txt | AC | 22 ms | 8912 KiB |
| 01_random_09.txt | AC | 23 ms | 11420 KiB |
| 01_random_10.txt | AC | 21 ms | 8764 KiB |
| 01_random_11.txt | AC | 24 ms | 11420 KiB |
| 01_random_12.txt | AC | 34 ms | 6716 KiB |
| 01_random_13.txt | AC | 37 ms | 8944 KiB |
| 01_random_14.txt | AC | 35 ms | 6724 KiB |
| 01_random_15.txt | AC | 37 ms | 8808 KiB |
| 01_random_16.txt | AC | 34 ms | 6724 KiB |
| 01_random_17.txt | AC | 37 ms | 8960 KiB |
| 02_consec_00.txt | AC | 9 ms | 12988 KiB |
| 02_consec_01.txt | AC | 28 ms | 11028 KiB |
| 02_consec_02.txt | AC | 23 ms | 11552 KiB |
| 03_segreg_00.txt | AC | 24 ms | 11408 KiB |
| 03_segreg_01.txt | AC | 22 ms | 11516 KiB |
| 03_segreg_02.txt | AC | 23 ms | 11428 KiB |
| 03_segreg_03.txt | AC | 23 ms | 11428 KiB |