Submission #1281330

#TimeUsernameProblemLanguageResultExecution timeMemory
1281330altern23Room Temperature (JOI24_ho_t1)C++20
35 / 100
2 ms584 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define ll long long
#define pii pair<ll, ll>
#define fi first
#define sec second
#define ld long double

#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("unroll-loops")

const int MAXN = 5e5;
const ll INF = 1e18;
const int MOD = 1e9 + 7;

ll A[MAXN + 5];

int main(){
      ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
      int tc = 1;	
      // cin >> tc;
      for(;tc--;){
            ll N, T; cin >> N >> T;

            vector<ll> comp;

            for(int i = 1; i <= N; i++){
                  cin >> A[i];
                  A[i] %= T;
                  comp.push_back(A[i]);
            }

            sort(comp.begin(), comp.end());
            comp.erase(unique(comp.begin(), comp.end()), comp.end());

            auto calc = [&](ll i, ll j){
                  return min({abs(j - i), abs((i + T) - j), abs(i - (j + T))});
            };

            ll ans = INF;
            for(auto i : comp){
                  ll cur = 0;
                  cur = max(cur, calc(i, comp[0]));
                  cur = max(cur, calc(i, comp.back()));

                  auto it = lower_bound(comp.begin(), comp.end(), (i + T / 2) % T);
                  if(it != comp.end()){
                        cur = max(cur, calc(i, (*it)));
                  }
                  if(it != comp.begin()){
                        --it;
                        cur = max(cur, calc(i, (*it)));
                  }

                  ans = min(ans, cur);
            }

            cout << ans << "\n";
      }
}

/*

*/
#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...