আমাদেরকে পূর্ণসংখ্যার একটি অ্যারে [] দেওয়া হয়েছে। এছাড়াও একটি সংখ্যা K। লক্ষ্য হল arr[]-এর সমস্ত সাবয়ারের গণনা করা যাতে সাবয়ারের সমস্ত উপাদান K-এর থেকে বড় বা K-এর সমস্ত উপাদানের থেকে কম। যদি অ্যারে হয় [1,2,3] এবং K হয় 1। সাবাররে হবে [2], [3], [2,3]।
আসুন উদাহরণ দিয়ে বুঝতে পারি।
ইনপুট − arr[] ={ 2, 2, 1, 1, 1, 5}; K=1
আউটপুট − K-এর থেকে বড় সমস্ত উপাদান সহ সাবয়ারের সংখ্যা হল − 4
ব্যাখ্যা − সুবারায়গুলো হবে:[2], [2], [5], [2,2]। প্রতিটি সাবয়ারের সমস্ত উপাদান 1 এর থেকে বেশি।
ইনপুট − arr[] ={ 3,4,5,6}; K=2
আউটপুট − K-এর চেয়ে বড় সমস্ত উপাদান সহ সাবয়ারের সংখ্যা হল − 10
ব্যাখ্যা − সুবারায় হবে − [3], [4], [5], [6], [3,4], [4,5], [5,6], [3,4,5], [4, ৫,৬], [৩,৪,৫,৬]। মোট গণনা=10।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
আমরা একটি লুপ ব্যবহার করে অ্যারেটি অতিক্রম করব। যদি বর্তমান উপাদান K এর থেকে বেশি হয়। বৃদ্ধির সংখ্যা। অন্যথায় গণনা=0 এবং মোট=গণনা*(গণনা+1)/2 সেট করুন। (সাবয়ারের জন্য)। যদি শেষে গণনা অ-শূন্য হয়। অবশিষ্ট সাবয়ারের গণনার জন্য গণনা*(গণনা+1)/2 যোগ করুন।
-
সংখ্যার একটি অ্যারে অ্যারে নিন।
-
ফাংশন sub_greater_k(int arr[], int size, int k) অ্যারে নেয় এবং k-এর চেয়ে বড় সমস্ত উপাদান সহ সাবয়ারের গণনা প্রদান করে।
-
0 হিসাবে প্রাথমিক গণনা নিন।
-
আমরা i=0 থেকে i
পর্যন্ত লুপ ব্যবহার করে অ্যারেটি অতিক্রম করব -
যদি arr[i]>k তারপর ইনক্রিমেন্ট কাউন্ট।
-
গণনা (উপাদান> k ) সহ সাবরারে গণনা*(গণনা+1)/2 হবে। এই ধরনের সমস্ত সাবয়ারের জন্য মোট এটি যোগ করুন।
-
শেষে আবার গণনা*(গণনা+1)/2 যোগ করুন যদি গণনাটি শূন্য হয় না।
-
ফলাফল হিসাবে মোট রিটার্ন।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int sub_greater_k(int arr[], int size, int k){ int count = 0; int total = 0; for (int i = 0; i < size; i++){ if (arr[i] > k){ count++; } else{ total += (count) * (count + 1) / 2; count = 0; } } if(count){ total += (count) * (count + 1) / 2; } return total; } int main(){ int arr[] = {2, 4, 6, 1, 3, 7, 9 }; int size = sizeof(arr) / sizeof(arr[0]); int k = 7; cout<<"Count of subarrays with all elements greater than K are: "<<sub_greater_k(arr, size, k); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of subarrays with all elements greater than K are: 1