Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

x 스왑 후 두 경쟁 학생 사이의 최대 거리를 찾는 C++ 프로그램

<시간/>

네 개의 숫자 n, x, b가 있다고 가정합니다. 일렬로 n명의 학생이 있습니다. 그들 사이에는 두 명의 라이벌 학생이 있습니다. 그들 중 하나는 위치에 있고 다른 하나는 위치 b에 있습니다. 위치는 왼쪽에서 오른쪽으로 1에서 n까지 번호가 매겨집니다. 우리는 이 두 학생 사이의 거리를 최대화하고 싶습니다. 다음 작업을 x번 수행할 수 있습니다. 인접한 두 학생을 선택한 다음 교환합니다. x 교환 후 가능한 최대 거리를 찾아야 합니다.

따라서 입력이 n =5와 같으면; x =1; a =3; b =2이면 출력은 2가 됩니다. 위치 3과 4에서 학생을 바꿀 수 있으므로 이 두 학생 사이의 거리는 |4 - 2| =2.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

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

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#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;
}

입력

5, 1, 3, 2

출력

2