Submission #1285329

#TimeUsernameProblemLanguageResultExecution timeMemory
1285329OmarAlimammadzadeRice Hub (IOI11_ricehub)C++20
17 / 100
1095 ms580 KiB
#include "ricehub.h" #include "bits/stdc++.h" using namespace std; #define int long long int32_t besthub(int32_t n, int32_t x, int32_t a[], int b) { int lo = 0, hi = x; while (lo + 100 < hi) { int mid1 = hi - (lo + lo + hi) / 3, mid2 = (lo + hi + hi) / 3; sort(a, a + n, [&](int i, int j) { return abs(i - mid1) < abs(j - mid1); }); int cost1 = 0, cnt1 = 0; for (int i = 0; i < n; i++) { if (cost1 + abs(a[i] - mid1) <= b) { cost1 += abs(a[i] - mid1); cnt1++; } } sort(a, a + n, [&](int i, int j) { return abs(i - mid2) < abs(j - mid2); }); int cost2 = 0, cnt2 = 0; for (int i = 0; i < n; i++) { if (cost2 + abs(a[i] - mid2) <= b) { cost2 += abs(a[i] - mid2); cnt2++; } } if (cnt1 <= cnt2) { lo = mid1; } else { hi = mid2; } } int ans = 0; for (int m = lo; m <= hi; m++) { sort(a, a + n, [&](int i, int j) { return abs(i - m) < abs(j - m); }); int cost = 0, cnt = 0; for (int i = 0; i < n; i++) { if (cost + abs(a[i] - m) <= b) { cost += abs(a[i] - m); cnt++; } } ans = max(ans, cnt); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...