मान लीजिए हमारे पास तीन मान n, total, और k हैं। अब आकार n की एक सूची पर विचार करें जिसका योग total के बराबर है और जहां किन्हीं दो लगातार तत्वों के बीच निरपेक्ष अंतर अधिकतम 1 है। हमें ऐसी सूची में इंडेक्स k पर अधिकतम मान ढूंढना है।
उदाहरण के लिए, यदि इनपुट है n = 5, total = 15, k = 3, तो आउटपुट 4 होगा, क्योंकि एक संभावित सूची है [3,2,3,4,3], इंडेक्स 3 पर पाया गया अधिकतम तत्व 4 है।
एल्गोरिदम
x := 0- निम्नलिखित को बार-बार करें:
a := k + 1s := (x + x - a + 1) * (a // 2)a := n - ks := s + (x + x - a + 1) * (a // 2)s := s - x- यदि
s > total, तो लूप से बाहर निकलें x := x + 1
x - 1लौटाएं
उदाहरण कार्यान्वयन
def solve(n, total, k):
x = 0
while True:
a = k + 1
s = (x + x - a + 1) * a // 2
a = n - k
s += (x + x - a + 1) * a // 2
s -= x
if s > total:
break
x += 1
return x - 1
n = 5
total = 15
k = 3
print(solve(n, total, k)) # आउटपुट: 4
इनपुट
5, 15, 3
आउटपुट
4