একটি অ্যারে arr[] দেওয়া আছে যাতে ধনাত্মক ইন্টিজার আছে। লক্ষ্য হলো arr[]-এর সাবঅ্যারেগুলোর মধ্যে কতটির গড় তার বাকি এলিমেন্টগুলোর গড়ের চেয়ে বড় সেটি বের করা।
উদাহরণ ১
ইনপুট
arr[] = { 3, 2, 4 }
আউটপুট
সাবঅ্যারেগুলোর গড় বাকি এলিমেন্টগুলোর গড়ের চেয়ে বড় সেটির সংখ্যা: 2
ব্যাখ্যা
সাবঅ্যারেগুলো: [3], [2], [4], [3,2], [2,4], [3,2,4]। [4]-এর গড় ৪ যা [2,3]-এর গড়ের চেয়ে বড়। [3,2,4]-এর গড় ৩ যা খালি সেটের গড়ের চেয়ে বড়।
উদাহরণ ২
ইনপুট
arr[] = { 3, 3, 3 }
আউটপুট
সাবঅ্যারেগুলোর গড় বাকি এলিমেন্টগুলোর গড়ের চেয়ে বড় সেটির সংখ্যা: 1
ব্যাখ্যা
সাবঅ্যারেগুলো: [3], [3], [3], [3,3], [3,3], [3,3,3]। [3,3,3]-এর গড় ৩ যা খালি সেটের গড়ের চেয়ে বড়।
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে একটি প্রিফিক্স সাম অ্যারে তৈরি করা হয় যেটি new_arr[i]-এ ইনডেক্স i পর্যন্ত এলিমেন্টগুলোর যোগফল রাখে। এখন আমাদের কাছে আগের এলিমেন্ট পর্যন্ত যোগফল আছে, তাই arr[i] পর্যন্ত যোগফল এবং এলিমেন্টের সংখ্যা j-i+1 ক্যালকুলেট করে গড় বের করা হয়।
ইনপুট হিসেবে অ্যারে
arr[]নিন।count(int arr[], int size)ফাংশনটি সাবঅ্যারেগুলোর সংখ্যা রিটার্ন করে।new_arr[size]অ্যারে নিন ইনডেক্স পর্যন্ত যোগফল রাখার জন্য।i=0থেকেiপর্যন্ত ট্রুভার্স করে new_arr[i] = new_arr[i-1] + arr[i-1]সেট করুন।এখন দুটি নেস্টেড
forলুপ দিয়েnew_arr[]ট্রুভার্স করুন।total_1হিসেবে সাবঅ্যারেতে যোগফল এবংcount_1হিসেবে এলিমেন্ট সংখ্যা ক্যালকুলেট করুন।total_2হিসেবে বাকি সাবঅ্যারেতে যোগফল এবংcount_2হিসেবে এলিমেন্ট সংখ্যা ক্যালকুলেট করুন।গড় হিসেবে
check_1 = total_1 / count_1এবংcheck_2 = total_2 / count_2ক্যালকুলেট করুন।যদি
check_1 > check_2হয় তবে কাউন্ট বাড়ান।forলুপ শেষে কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int count(int arr[], int size) {
int count = 0;
int new_size = size + 1;
int new_arr[new_size] = { 0 };
for (int i = 1; i < new_size; i++) {
new_arr[i] = new_arr[i - 1] + arr[i - 1];
}
for (int i = 1; i < new_size; i++) {
for (int j = i; j < new_size; j++) {
int total_1 = new_arr[j] - new_arr[i - 1];
int count_1 = j - i + 1;
int total_2 = new_arr[size] - total_1;
int count_2 = 0;
if((size - count_1) == 0) {
count_2 = 1;
} else {
count_2 = size - count_1;
}
int check_1 = total_1 / count_1;
int check_2 = total_2 / count_2;
if (check_1 > check_2) {
count++;
}
}
}
return count;
}
int main() {
int arr[] = { 2, 6, 2, 4 };
int size = sizeof(arr) / sizeof(arr[0]);
cout << "সাবঅ্যারেগুলোর গড় বাকি এলিমেন্টগুলোর গড়ের চেয়ে বড় সেটির সংখ্যা: " << count(arr, size);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
সাবঅ্যারেগুলোর গড় বাকি এলিমেন্টগুলোর গড়ের চেয়ে বড় সেটির সংখ্যা: 6