Submission #1144714

#TimeUsernameProblemLanguageResultExecution timeMemory
1144714sohamsen15Room Temperature (JOI24_ho_t1)C++20
70 / 100
2092 ms464 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pdd = pair<double, double>;

const int INF = 2e9;
const ll INFL = 2e18;
const ll MOD = 1e9 + 7;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    ll n, t; cin >> n >> t;
    vector<ll> a(n); for (auto &x: a) cin >> x;
    for (ll i = 0; i < n; i++) a[i] %= t;

    auto f = [&](ll x) {
        ll ret = 0;
        for (ll i = 0; i < n; i++) ret = max(min((a[i] + x) % t, t - ((a[i] + x) % t)), ret);
        return ret;
    };

    auto g = [&](ll y) {
        ll mine = t;
        for (ll i = 0; i < t; i++) mine = min(mine, f(i));
        return mine <= y;
    };

    if (g(0)) {
        cout << 0 << "\n";
        return 0;
    }

    ll l = 1, r = t - 1;
    while (l <= r) {
        ll mid = (l + r) / 2;
        if (g(mid)) {
            if (!g(mid - 1)) {
                cout << mid << "\n";
                break;
            } else {
                r = mid - 1;
            }
        } else l = mid + 1;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...