78272024-01-11 12:21:39gortomiEgyengetőcpp17Elfogadva 100/1002.165s27280 KiB
#include <bits/stdc++.h>
#include "grader.h"
using namespace std;
using ll = long long;
int main()
{
    int n = getN(), k = getK();
    map<int, ll> m;
    ll ans = 0;
    ll l = 0, r = k, ldb = 0, lb = 0, rdb = 0, rb = 0;
    for(int i = 1; i <= n; i++)
    {
        int x = Data();
        m[x]++;
        if(x < l)
        {
            ans += l - x;
            ldb++;
        }
        if(x == l) lb++;
        if(x > r)
        {
            ans += x - r;
            rdb++;
        }
        if(x == r) rb++;
        if(rdb > ldb + lb)
        {
            pair<int, int> it1 = *m.upper_bound(l), it2 = *m.upper_bound(r);
            int mov = min(it1.first - l, it2.first - r);
            l += mov;
            r += mov;
            ldb += lb;
            lb = 0;
            rb = 0;
            ans -= mov * (rdb - ldb);
            if(it1.first == l)
            {
                lb = it1.second;
            }
            if(it2.first == r)
            {
                rb = it2.second;
                rdb -= it2.second;
            }
        }
        if(ldb > rdb + rb)
        {
            auto x = m.lower_bound(l), y = m.lower_bound(r);
            x--;
            y--;
            pair<int, int> it1 = *x, it2 = *y;
            int mov = min(l - it1.first, r - it2.first);
            l -= mov;
            r -= mov;
            rdb += rb;
            lb = 0;
            rb = 0;
            ans -= mov * (ldb - rdb);
            if(l == it1.first)
            {
                lb = it1.second;
                ldb -= it1.second;
            }
            if(r == it2.first)
            {
                rb = it2.second;
            }
        }
        Solution(ans);
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva3ms2020 KiB
subtask220/20
3Elfogadva4ms2260 KiB
4Elfogadva4ms2328 KiB
5Elfogadva6ms2332 KiB
6Elfogadva7ms2460 KiB
7Elfogadva9ms2536 KiB
8Elfogadva1.187s3796 KiB
subtask320/20
9Elfogadva14ms2528 KiB
10Elfogadva13ms2948 KiB
11Elfogadva12ms2800 KiB
12Elfogadva14ms3104 KiB
13Elfogadva14ms3496 KiB
14Elfogadva14ms3404 KiB
subtask420/20
15Elfogadva65ms3484 KiB
16Elfogadva119ms4824 KiB
17Elfogadva120ms3568 KiB
18Elfogadva119ms4944 KiB
19Elfogadva122ms4548 KiB
20Elfogadva98ms5032 KiB
subtask540/40
21Elfogadva1.36s20088 KiB
22Elfogadva1.519s4188 KiB
23Elfogadva1.557s4120 KiB
24Elfogadva2.104s4180 KiB
25Elfogadva2.088s27280 KiB
26Elfogadva2.165s27148 KiB