สมมติว่าเรามีตัวเลขสามตัว n, k และ t Amal กำลังวิเคราะห์คลื่นเม็กซิกัน มีผู้ชมจำนวน n คนตั้งแต่ 1 ถึง n เริ่มตั้งแต่เวลา 0 เวลาที่ 1 ผู้ชมคนแรกยืน เวลาที่ 2 ผู้ชมที่สองยืน ณ เวลาที่ k ผู้ชมที่ k ยืนขึ้น ในเวลา (k+1) ผู้ชมที่ (k+1) ยืนและผู้ชมคนแรกนั่ง ที่ (k+2) ผู้ชมที่ (k+2) ยืนอยู่ แต่คนที่ 2 นั่ง ตอนนี้เป็นครั้งที่ n ผู้ชมที่ n ยืนและ (n-k) ผู้ชมนั่ง ณ เวลา (n+1) ผู้ชมที่ (n+1-k) นั่งไปเรื่อยๆ เราต้องหาจำนวนผู้ชมยืน ณ เวลา t.
ดังนั้น ถ้าอินพุตเป็นเหมือน n =10; k =5; t =3 จากนั้นผลลัพธ์จะเป็น 3 เพราะก่อน 5 จะไม่มีใครนั่งดังนั้นผู้ชมจาก 1 ถึง 3 ทุกคนจึงยืน
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
return minimum of t, k and (n + k - t)
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; int solve(int n, int k, int t){ return min({ t, k, n + k - t }); } int main(){ int n = 10; int k = 5; int t = 3; cout << solve(n, k, t) << endl; }
อินพุต
10, 5, 3
ผลลัพธ์
3