আমাদের প্রথম N প্রাকৃতিক সংখ্যার পারমুটেশন একটি অ্যারে দেওয়া আছে। লক্ষ্য হলো এমন ইনডেক্স পেয়ার (i,j) কাউন্ট করা যাতে Arr[i] + Arr[j] = max(Arr[x]) যেখানে i ≤ x ≤ j। অর্থাৎ, দুটি এলিমেন্টের যোগফল তাদের মাঝপথে পাওয়া যাবে সর্বোচ্চ এলিমেন্টের সমান।
ইনপুট
Arr[]= { 2,4,1,3,6,5 }
আউটপুট
Count of index pairs which satisfy the given condition: 1
ব্যাখ্যা: 1+5=6, 6 তাদের মাঝপথে আছে এবং ম্যাক্স 6। বাকি পেয়ার সন্তুষ্ট করে না।
ইনপুট
Arr[]= { 1,2,5,4,3 }
আউটপুট
Count of index pairs which satisfy the given condition: 2
ব্যাখ্যা: 1+4=5 (মাঝপথে 5, ম্যাক্স 5), 2+3=5 (মাঝপথে 5, ম্যাক্স 5)।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- countPairs(int A[], int n) ফাংশন।
- count=0, max1=A[0], maxindex=0।
- নেস্টেড লুপ i=0 to n-2, j=i+1 to n-1: A[j] >= max1 হলে max1, maxindex আপডেট।
- যদি A[i]+A[j] == max1 এবং maxindex i ও j-এর মাঝপথে থাকে তবে count++।
- count রিটার্ন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int countPairs(int A[], int n){
int count = 0;
int max1 = A[0], maxindex = 0;
for (int i = 0; i < n-1; i++){
for (int j = i+1; j < n; j++){
if (A[j] >= max1){ max1 = A[j]; maxindex = j; }
if (A[i] + A[j] == max1 && maxindex >= i && maxindex <= j)
count++;
}
}
return count;
}
int main(){
int Arr[] = {3, 4, 6, 1, 5, 2};
int size = 6;
cout << "Count of index pairs which satisfy the given condition:" << countPairs(Arr, size);
return 0;
}
আউটপুট
Count of index pairs which satisfy the given condition: 1