fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int N, M, K;
  6. cin >> N >> M >> K;
  7.  
  8. if (M == 0 || N == 0) {
  9. cout << M << endl;
  10. return 0;
  11. }
  12.  
  13. int x = 0;
  14.  
  15. // wybór początkowego x
  16. if (N % 2 <= M) {
  17. x = N;
  18. } else {
  19. x = (N <= M ? N : M); // największe możliwe x nie większe niż M
  20. }
  21.  
  22. for (int i = 0; i < K; i++) {
  23. N -= x;
  24. M -= x / 2; // dzielenie całkowite, bez ułamków
  25. M += x;
  26.  
  27. // jeśli N lub M spadną do zera, kończymy od razu
  28. if (N <= 0 || M <= 0) {
  29. break;
  30. }
  31.  
  32. // aktualizacja x po każdym kroku w zależności od nowych wartości
  33. if (N % 2 <= M) {
  34. x = N;
  35. } else {
  36. x = (N <= M ? N : M);
  37. }
  38. }
  39.  
  40. cout << M << endl;
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0.01s 5316KB
stdin
33 44 5
stdout
61