สมมติว่าเรามีตัวเลขสี่ตัว 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