একটি অ্যারে দেওয়া আছে। দৈর্ঘ্য ১-এর চেয়ে বড় স্ট্রিক্টলি ডিক্রিজিং সাবঅ্যারে কয়টি আছে তা বের করতে হবে। উদাহরণ: [100, 3, 1, 15] -> [100,3], [100,3,1], [15] মোট ৩টি।
দৈর্ঘ্য l-এর ডিক্রিজিং সিকোয়েন্স পেলে l*(l-1)/2 যোগ করুন।
উদাহরণ
#include <iostream>
using namespace std;
int countSubarrays(int array[], int n) {
int count = 0, len = 1;
for (int i = 0; i < n-1; ++i) {
if (array[i+1] < array[i]) len++;
else {
count += (len - 1) * len / 2;
len = 1;
}
}
if (len > 1) count += (len - 1) * len / 2;
return count;
}
int main() {
int A[] = {100, 3, 1, 13, 8};
int n = sizeof(A) / sizeof(A[0]);
cout << "Number of decreasing subarrays: " << countSubarrays(A, n);
return 0;
}
আউটপুট
Number of decreasing subarrays: 4