मान लीजिए कि हमारे पास तीन मान n, कुल और k हैं। अब आकार n की एक सूची पर विचार करें जिसका योग कुल के समान है और जहां किन्हीं दो क्रमागत तत्वों के बीच पूर्ण अंतर अधिकतम 1 है। हमें ऐसी सूची के सूचकांक k पर अधिकतम मान ज्ञात करना है।
इसलिए, यदि इनपुट n =5 कुल =15 k =3 जैसा है, तो आउटपुट 4 होगा, क्योंकि एक संभावित सूची [3,2,3,4,3] की तरह है, अधिकतम तत्व जो सूचकांक 3 पर पाया जाता है 4 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- x :=0
- निम्नलिखित को बार-बार करें
- a :=k + 1
- s :=(x + x - a + 1) * फ्लोर अगर a/2
- a :=n - k
- s :=s +(x + x - a + 1) * फर्श a/2
- s :=s - x
- यदि s> कुल, तो
- लूप से बाहर आएं
- x :=x + 1
- रिटर्न x - 1
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n, total, k): x = 0 while 1: 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))
इनपुट
5, 15, 3
आउटपुट
4