สมมติว่าเรามีตัวเลขสองตัว n และ s เราต้องหาค่ามัธยฐาน (median) สูงสุดที่เป็นไปได้ของอาร์เรย์ที่มี n องค์ประกอบไม่ติดลบ โดยที่ผลรวมขององค์ประกอบเท่ากับ s
เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 3; s = 5 ผลลัพธ์จะได้ 2 เพราะสำหรับอาร์เรย์ [1, 2, 2] ผลรวมคือ 5 และมัธยฐานคือ 2
ขั้นตอนการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
m := floor(n / 2) + 1 คืนค่า floor(s / m)
ตัวอย่างโค้ด
ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:
#include <bits/stdc++.h> using namespace std; int solve(int n, int s) { int m = n / 2 + 1; return s / m; } int main() { int n = 3; int s = 5; cout << solve(n, s) << endl; }
ข้อมูลนำเข้า
3, 5
ข้อมูลส่งออก
2