fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long sumlm(long long l, long long m){
  5. return m*(m+1)/2 - (l-1)*l/2;
  6. }
  7.  
  8. long long summ1r(long long m, long long r){
  9. return r*(r+1)/2 - m*(m+1)/2;
  10. }
  11.  
  12. int main() {
  13. long long l, r;
  14. cin >> l >> r;
  15. long long tl = l, tr = r;
  16. long long mid;
  17.  
  18. while(tl <= tr){
  19. mid = (tl + tr) / 2;
  20. long long lm = sumlm(l, mid);
  21. long long mr = summ1r(mid, r);
  22. if (lm <= mr) tl = mid + 1;
  23. else tr = mid - 1;
  24. }
  25.  
  26. long long best = mid;
  27. long long diff = LLONG_MAX;
  28. for(long long x = mid-1; x <= mid+1; x++){
  29. if(x < l || x > r) continue;
  30. long long cur_diff = abs(sumlm(l, x) - summ1r(x, r));
  31. if(cur_diff < diff){
  32. diff = cur_diff;
  33. best = x;
  34. }
  35. }
  36.  
  37. cout << best;
  38. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
Standard output is empty