मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है, और दूसरा मान c है। हमारे सिस्टम में एक क्रेजी वर्ड प्रोसेसर मौजूद है जहां हम कैरेक्टर टाइप कर सकते हैं लेकिन अगर हम लगातार सी सेकेंड्स के लिए टाइप नहीं करते हैं, तो सभी लिखित अक्षर हटा दिए जाएंगे। A[i] उस समय का प्रतिनिधित्व करता है जब हमने ith वर्ण टाइप किया है। हमें उन वर्णों की अंतिम संख्या ज्ञात करनी है जो सभी n वर्ण टाइप करने के बाद स्क्रीन पर बने रहेंगे।
इसलिए, यदि इनपुट ए =[1, 3, 8, 14, 19, 20] जैसा है; c=5, तो आउटपुट 3 होगा, क्योंकि दूसरे 8 पर स्क्रीन पर 3 शब्द होंगे। फिर, दूसरे 13 पर सब कुछ गायब हो जाता है। 14 और 19 सेकंड में दो और अक्षर टाइप किए जाते हैं, और अंत में, दूसरे 20 पर, एक और अक्षर टाइप किया जाता है, और कुल 3 अक्षर स्क्रीन पर रहते हैं।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
s := 1 n := size of A for initialize i := 1, when i < n, update (increase i by 1), do: if (A[i] - A[i - 1]) <= c, then: (increase s by 1) Otherwise s := 1 return s
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int c) { int s = 1; int n = A.size(); for (int i = 1; i < n; i++) { if ((A[i] - A[i - 1]) <= c) { s++; } else { s = 1; } } return s; } int main() { vector<int> A = { 1, 3, 8, 14, 19, 20 }; int c = 5; cout << solve(A, c) << endl; }
इनपुट
{ 1, 3, 8, 14, 19, 20 }, 5
आउटपुट
3