제출 #1170750

#제출 시각아이디문제언어결과실행 시간메모리
1170750CraftlessRoom Temperature (JOI24_ho_t1)C++20
50 / 100
0 ms328 KiB
#include <bits/stdc++.h> #define int long long int #define F first #define S second #define pb push_back #define mp make_pair #define pi pair<int, int> #define INF 1e18 using namespace std; int N, T, A[500010], mn = INF, hi = INF, mxd = -INF, mnd = INF; // multiset<int> ms; // once someone reaches half of T, flip them // use a multiset??? int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> N >> T; for (int i = 0; i < N; i++) { cin >> A[i]; mn = min(mn, A[i]); } for (int i = 0; i < N; i++) { int m = (A[i] - mn) % T; int d = min(m, T - m); } for (int j = 0; j < N; j++) { int m = (A[j] - mn) % T; int d; if (abs(m) < abs(T - m)) d = m; else d = T - m; mxd = max(mxd, d); mnd = min(mnd, d); // cout << d << " "; } cout << (mxd - mnd) / 2 + ((mxd - mnd) % 2 != 0) << "\n"; // for (int j = 0; j < N; j++) { // int m = (A[j] - i) % T; // int d = min(abs(m), abs(T - m)); // mxd = max(mxd, d); // ms.insert(d); // } // incr by 1 each time // until > half then flip // for (int i = mn - T / 2; i <= mn + T / 2; i++) { // int mxd = -INF; // for (int j = 0; j < N; j++) { // int m = (A[j] - i) % T; // int d = min(abs(m), abs(T - m)); // mxd = max(mxd, d); // cout << d << " "; // } // cout << endl; // hi = min(hi, mxd); // } // cout << hi << "\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...