53332023-04-25 23:02:45zsomborEgyengetőcpp17Hibás válasz 0/1003ms4500 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include "grader.h"
using namespace std;
using ll = long long;

ll n, k, ans = 1e15;
vector <ll> v(1, 0);
vector <ll> p(1, 0);

ll sum(int l, int r) {
    return p[r] - p[l - 1];
}

ll cost(ll MN) {
    ll MX = MN + k;
    int L = lower_bound(v.begin(), v.end(), MN) - 1 - v.begin();
    int R = upper_bound(v.begin(), v.end(), MX) - v.begin();
    return MN * L - sum(1, L) + sum(R, n) - MX * (n + 1 - R);
}

int main()
{
    n = getN();
    k = getK();
    for (int i = 1; i <= n; i++) v.push_back(Data());
    sort(v.begin(), v.end());
    for (int i = 1; i <= n; i++) p.push_back(p[i - 1] + v[i]);
    for (int i = 1; i <= n; i++) {
        ans = min(ans, cost(v[i]));
        ans = min(ans, cost(v[i] - k));
    }
    Solution(ans);
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1896 KiB
2Hibás válasz3ms2128 KiB
subtask20/20
3Hibás válasz3ms2292 KiB
4Hibás válasz3ms2512 KiB
5Hibás válasz3ms2720 KiB
6Hibás válasz3ms2936 KiB
7Hibás válasz2ms3012 KiB
8Hibás válasz3ms3244 KiB
subtask30/20
9Hibás válasz3ms3352 KiB
10Hibás válasz3ms3480 KiB
11Hibás válasz2ms3472 KiB
12Hibás válasz3ms3464 KiB
13Hibás válasz3ms3444 KiB
14Hibás válasz3ms3436 KiB
subtask40/20
15Hibás válasz3ms3544 KiB
16Hibás válasz3ms3568 KiB
17Hibás válasz3ms3796 KiB
18Hibás válasz3ms4004 KiB
19Hibás válasz3ms4112 KiB
20Hibás válasz3ms4240 KiB
subtask50/40
21Hibás válasz3ms4156 KiB
22Hibás válasz3ms4268 KiB
23Hibás válasz3ms4280 KiB
24Hibás válasz2ms4312 KiB
25Hibás válasz3ms4280 KiB
26Hibás válasz3ms4500 KiB