Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tìm khoảng cách tối đa giữa hai sinh viên đối thủ sau khi hoán đổi x

Giả sử chúng ta có bốn số n, x, a và b. Có n học sinh trong hàng. Có hai học sinh đối địch trong số họ. Một trong số chúng ở vị trí a và một trong số chúng ở vị trí b. Các vị trí được đánh số từ 1 đến n từ trái sang phải. Chúng tôi muốn tối đa hóa khoảng cách giữa hai học sinh này. Ta có thể thực hiện phép toán sau x lần:Chọn hai học sinh liền kề rồi đổi chỗ cho nhau. Chúng ta phải tìm khoảng cách lớn nhất có thể sau x lần hoán đổi.

Vì vậy, nếu đầu vào là n =5; x =1; a =3; b =2 thì kết quả sẽ là 2, vì ta có thể hoán đổi học sinh ở vị trí 3 và 4 nên khoảng cách giữa hai học sinh này là | 4 - 2 | =2.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

return minimum of (|a - b| + x) and (n - 1)

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;

int solve(int n, int x, int a, int b) {
   return min(abs(a - b) + x, n - 1);
}
int main() {
   int n = 5;
   int x = 1;
   int a = 3;
   int b = 2;
   cout << solve(n, x, a, b) << endl;
}

Đầu vào

5, 1, 3, 2

Đầu ra

2