結果
| 問題 | No.198 キャンディー・ボックス2 |
| コンテスト | |
| ユーザー |
kichirb3
|
| 提出日時 | 2018-03-29 14:15:26 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 1,000 ms |
| コード長 | 1,237 bytes |
| 記録 | |
| コンパイル時間 | 637 ms |
| コンパイル使用メモリ | 78,172 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2025-11-26 11:41:40 |
| 合計ジャッジ時間 | 1,707 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 27 |
ソースコード
// No.198 キャンディー・ボックス2
// https://yukicoder.me/problems/no/198
//
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <utility>
using namespace std;
long long int solve(unsigned int B, unsigned int N, vector<int>& candies);
long long calc_cost(long long n, vector<int>& candies);
int main() {
std::cin.tie(nullptr);
std::ios::sync_with_stdio(false);
unsigned int B, N;
cin >> B >> N;
vector<int> candies(N);
for (int i = 0; i < N; ++i)
cin >> candies[i];
long long ans = solve(B, N, candies);
cout << ans << endl;
}
long long int solve(unsigned int B, unsigned int N, vector<int>& candies) {
sort(candies.begin(), candies.end());
long long median;
if (N % 2 == 1)
median = candies[N/2];
else
median = (candies[(N-1)/2] + candies[N/2]) / 2;
long long max_avg = B;
for (auto c: candies)
max_avg += c;
max_avg /= N;
median = min(median, max_avg);
long long ans = calc_cost(median, candies);
return ans;
}
long long calc_cost(long long n, vector<int>& candies) {
long long ans = 0;
for (auto s: candies) {
ans += abs(s - n);
}
return ans;
}
kichirb3