Submission #1248646

#TimeUsernameProblemLanguageResultExecution timeMemory
1248646Bui_Quoc_CuongRoom Temperature (JOI24_ho_t1)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define FOR(i, a, b) for (int i = a; i <= (int)b; i++) #define FORD(i, a, b) for (int i = a; i >= (int)b; i--) #define MASK(i) (1LL << (i)) #define BIT(S, i) (((S) >> (i)) & 1) #define mp make_pair #define pb push_back #define fi first #define se second #define all(x) x.begin(), x.end() const int N = 5e5 + 5; int n,k; int a[N]; void init() { cin>>n>>k; FOR(i,1,n) cin>>a[i]; } namespace sub1 { void solve() { int ans=2e9; FOR(t,1,50000) { int ma=0; FOR(i,1,n) { if(a[i]>=t) { int tam=(a[i]-t)/k; int val=a[i] -k*tam; int curma = abs(t-val); tam++; val=a[i]-k*tam; curma=min(curma,abs(val-t)); tam--; tam--; curma=min(curma,abs(val-t)); ma=max(ma,curma); } else ma=max(ma,abs(t-a[i])); } ans=min(ans,ma); } cout << ans; } } namespace sub2 { int tinh(int x, int y) { int l = 0, r = (y - x) / k + 20, res = 0; while(l <= r) { int mid = (l + r) >> 1; if (x - mid * k >= y) res = mid, l = mid + 1; else r = mid - 1; } int cost1 = abs((x - res * k) - y); int cost2 = abs((x - (res + 1) * k) - y); int cost3 = abs((x - (res - 1) * k) - y); return min({cost1,cost2,cost3}); } int calc(int t) { int ma=0; FOR(i,1,n) { if(a[i]>t) { ma=max(ma,tinh(a[i],t)); } else ma=max(ma,abs(t-a[i])); } return ma; } void solve() { int l=0,r=1e9,ans=2e9; FOR(time,1,100) { int mid1 = l + (r-l)/3; int mid2 = r - (r-l)/3; int cost1 = calc(mid1); int cost2 = calc(mid2); ans=min(ans,cost1); ans=min(ans,cost2); if(cost1 >= cost2) { l=mid1; } else r=mid2; } cout << ans; } } void process() { // sub1::solve(); sub2::solve(); } signed main(void) { ios_base::sync_with_stdio(false); cin.tie(nullptr); #define taskname "kieuoanh" if(fopen(taskname".inp", "r")) { freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout); } init(); process(); return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:113:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  113 |         freopen(taskname".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:114:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  114 |         freopen(taskname".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...