Submission #1179660

#TimeUsernameProblemLanguageResultExecution timeMemory
1179660niepamietamhaslaRoom Temperature (JOI24_ho_t1)C++20
100 / 100
103 ms4612 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll; 

vector<ll> ai;
multiset<ll> usuniete;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, t;
    cin >> n >> t;
    ll x;
    for(int i = 0; i < n; ++i){
        cin >> x;
        ai.push_back(x);
    }
    sort(ai.begin(),ai.end());
    for(int i = 1; i < n; ++i){
        ai[i] = ai[i] - (ai[i] - ai[0]) / t * t;
    }
    sort(ai.begin(),ai.end());
    ll w = 1e9;
    ll minv = 1e9;
    for(int i = n - 1; i >= 0; --i){
        if(i > 0){
            ai[i] = ai[i] - (ai[i] - ai[i-1]) / t * t;
        }
        while(usuniete.size() > 0){
            auto it = usuniete.end();
            --it;
            if((*it) > ai[i]){
                ll v = (*it);
                usuniete.erase(it);
                v -= t;
                minv = min(minv, v);
            }
            else{
                break;
            }
        }
        w = min(w, ((abs(ai[i] - min(ai[0], minv))) + 1) / 2);
        int p = (ai[i] - ai[0]) / t;
        p = (ai[i]) - p * t;
        usuniete.insert(p);
    }
    // int val = ai[0] - t;
    // cout << val << " v\n";
    // while(usuniete.size() > 0){
    //     auto it = usuniete.end();
    //     --it;
    //     if((*it) > val){
    //         ll v = (*it);
    //         usuniete.erase(it);
    //         v -= t;
    //         minv = min(minv, v);
    //     }
    //     else{
    //         break;
    //     }
    // }
    // w = min(w, ((abs(val - minv)) + 1) / 2);
    cout << w << "\n";
    return 0;
}
#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...