สมมติว่าเรามีตัวเลขสี่ตัว n, x, a และ b มีนักเรียน n คนอยู่ในแถว มีนักเรียนสองคนที่เป็นคู่แข่งกันในหมู่พวกเขามี ตัวหนึ่งอยู่ที่ตำแหน่ง a และอีกตัวอยู่ที่ตำแหน่ง b ตำแหน่งมีหมายเลขตั้งแต่ 1 ถึง n จากซ้ายไปขวา เราต้องการเพิ่มระยะห่างระหว่างนักเรียนสองคนนี้ให้มากที่สุด เราสามารถดำเนินการต่อไปนี้ได้ x ครั้ง:เลือกนักเรียนสองคนที่อยู่ติดกันแล้วสลับกัน เราต้องหาระยะทางสูงสุดที่เป็นไปได้หลังจาก x swaps
ดังนั้น ถ้าอินพุตเป็นเหมือน n =5; x =1; ก =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