Submission #1182725

#TimeUsernameProblemLanguageResultExecution timeMemory
1182725DedibeatRoom Temperature (JOI24_ho_t1)C++20
85 / 100
2095 ms74144 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; #define F first #define S second #define all(x) (x).begin(), (x).end() template<typename T, typename U> ostream &operator<<(ostream &os, const pair<T, U> &p) { return os << "(" << p.F << "," << p.S << ")"; } template<typename T> void print(const T &v, int lim = 1e9) { for(auto x : v) if(lim-- > 0) cout << x << " "; cout << "\n"; } #define int long long int N, T; signed main() { ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); cin >> N >> T; vector<int> a(N); for(int &x : a) cin >> x; auto check = [&](int mid) { vector<pair<int, int>> valid_ranges; vector<int> reg(N); int cnt = 0; for(int i = 0; i < N; i++) { for(int j = -1; j <= 1; j++) { int y = a[i] % T + j * T; valid_ranges.emplace_back(y - mid, -i - 1); valid_ranges.emplace_back(y + mid, i + 1); } } sort(valid_ranges.begin(), valid_ranges.end()); for(auto &[l, id] : valid_ranges) { // cout << l << " " << abs(id) - 1 << "\n"; if(id > 0) { if(reg[id - 1] == 1) cnt--; reg[id - 1]--; } else { if(reg[-1 - id] == 0) cnt++; reg[-1 - id]++; } // print(reg); // cout << cnt << "\n"; if(cnt == N) return 1; } return 0; }; int l = -1, r = 1e9; //check(1); //return 0; while(l + 1 < r) { int mid = (l + r) / 2; if(check(mid)) r = mid; else l = mid; } cout << r << "\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...