fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4.  
  5. signed main() {
  6. ios::sync_with_stdio(false);
  7. cin.tie(nullptr);
  8.  
  9. long long h, d;
  10. cin >> h >> d;
  11.  
  12. // Tìm k sao cho k*(k+1)/2 <= h
  13. long long k = (sqrt(8.0*h + 1) - 1) / 2;
  14.  
  15. // Nếu chạy liên tiếp đủ để vượt d
  16. if (k >= d) {
  17. cout << d << "\n";
  18. return 0;
  19. }
  20.  
  21. // Tính thể lực còn lại sau khi chạy k bước
  22. long long used = k*(k+1)/2;
  23. long long remain = h - used;
  24.  
  25. // Số bước cần chạy thêm
  26. long long need = d - k;
  27.  
  28. // Khi chạy tiếp bước (k+1), cần (k+1) thể lực.
  29. // Nếu thiếu, phải nghỉ thêm.
  30. long long nextCost = k + 1;
  31.  
  32. long long restNeeded = 0;
  33. if (remain < nextCost) {
  34. restNeeded = nextCost - remain;
  35. remain = nextCost; // Sau khi nghỉ xong, đủ để chạy bước này
  36. }
  37.  
  38. // Tổng lượt = số lượt đã chạy k + lượt nghỉ + lượt chạy thêm cần
  39. long long result = k + restNeeded + need;
  40.  
  41. cout << result << "\n";
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 0.01s 5308KB
stdin
5 3
stdout
4