OIG XIV - sza

// https://szkopul.edu.pl/problemset/problem/u7ZSOecKyX7NXVxrGSiyHAqd/site/?key=statement

#include <bits/stdc++.h>

using namespace std;

#define int long long

constexpr int sizik = 1000 * 1001, INF = (int)(1e9) * (int)(1e9);

#define ar std::array
#define pr std::pair
#define vec std::vector

typedef vec<vec<int>> _kra;

void solve() {
    int n, k;
    std::cin >> n >> k;

    std::vector<int> v(n);
    for (auto& a : v) {
        std::cin >> a;
    }

    std::vector<int> pref(n + 1);
    for (int i = 1; i <= n; i++) {
        pref[i] = pref[i - 1] + v[i - 1];
    }

    int ans = INF, ans1 = INF;

    std::set<int> s;
    s.insert(0);

    for (int i = 1; i <= n; i++) {
        ans = std::min(ans, abs(pref[i] - k));

        int local = pref[i] - k;

        auto z1 = s.lower_bound(local);
        if (z1 == s.end()) {
            z1--;
        }

        auto z2 = s.upper_bound(local - 1);
        if (z2 != s.begin()) {
            z2--;
        }

        ans = std::min({ans, abs(local - *z1), abs(local - *z2)});

        s.insert(pref[i]);
    }

    std::cout << ans << '\n';
}

int32_t main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int t = 1;
    // std::cin >> t;

    for (; t > 0; t--) {
        solve();
    }

    return 0;
}