আমাদের প্রথম N প্রাকৃতিক সংখ্যার ক্রমাগত বিন্যাস দেওয়া হয়েছে। এখানে লক্ষ্য হল উপাদানগুলির সূচক জোড়া খুঁজে পাওয়া যা নীচে উল্লিখিত শর্ত পূরণ করে −
যদি একটি অ্যারে হয় Arr[], তাহলে i,j হল সূচী, উপাদান জোড়া গণনা যেমন Arr[i]+Arr[j]=max(Arr[x])যেমন i<=x<=j.
অর্থাৎ, Arr[i] এবং A[j]-এর যোগফল এই দুটি সেগমেন্টের মধ্যে হওয়া সর্বোচ্চ উপাদানের সমান।
ইনপুট
Arr[]= { 2,4,1,3,6,5 }
আউটপুট
Count of index pairs which satisfy the given condition:1
ব্যাখ্যা − জোড়ার যোগফল দেওয়া হয়েছে −
2+4=6, 6 সর্বাধিক কিন্তু 2 এবং 4 এর মধ্যে নয়।
2+1=3, 3 2 এবং 1 এর মধ্যে নয় এবং তাদের মধ্যে সর্বাধিক 4।
2+3=5, 5 2 এবং 3 এর মধ্যে নয় এবং তাদের মধ্যে সর্বাধিক 4।
2+6=8, 8 2 এবং 6 এর মধ্যে নয় এবং তাদের মধ্যে সর্বাধিক 4।
একইভাবে
1+5=6, 6 হল 1 থেকে 5 এর মধ্যে এবং তাদের মধ্যে সর্বোচ্চ 6।
সবগুলোর মধ্যে মাত্র 1 জোড়া আছে যা শর্ত পূরণ করে।
ইনপুট
Arr[]= { 1,2,5,4,3 }
আউটপুট
Count of index pairs which satisfy the given condition:2
ব্যাখ্যা − জোড়ার যোগফল দেওয়া হয়েছে −
1+5=6, 6 সর্বাধিক কিন্তু 1 এবং 5 এর মধ্যে নয়।
1+4=5, 5 হল 1 এবং 4 এর মধ্যে এবং তাদের মধ্যে সর্বোচ্চ 5।
2+3=5, 5 হল 2 এবং 3 এর মধ্যে এবং তাদের মধ্যে সর্বাধিক 5।
1+3=4, 4 হল 1 এবং 3 এর মধ্যে কিন্তু তাদের মধ্যে সর্বোচ্চ 5।
সকলের মধ্যে 2 জোড়া আছে যা শর্ত পূরণ করে।
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
পূর্ণসংখ্যা অ্যারে Arr[] সংখ্যা সংরক্ষণ করে এবং এর দৈর্ঘ্যকে আকার দেয়।
-
ফাংশন কাউন্টপেয়ার্স(int A[],int n) ইনপুট হিসাবে একটি অ্যারে এবং এর আকার n নেয় এবং উপরের শর্ত পূরণ করে জোড়ার সংখ্যা ফেরত দেয়..
-
পরিবর্তনশীল গণনা এই ধরনের জোড়ার জন্য প্রাথমিক মান 0 সংরক্ষণ করতে ব্যবহৃত হয়।
-
এখন পর্যন্ত পাওয়া সর্বোচ্চ মানের মান এবং সূচক সংরক্ষণ করতে max1 প্রথম উপাদান এবং এর সূচক 0 হিসাবে maxindex এর সাথে শুরু করুন।
-
লুপ ব্যবহার করে অ্যারেটি অতিক্রম করা শুরু করুন।
-
লুপের জন্য নেস্টেড যদি A[j]>=max1 দেওয়া হয় তাহলে max1 এবং এর সূচক j দিয়ে আপডেট করুন।
-
এ
-
শেষ হওয়ার পরে উভয় লুপ গণনায় উপস্থিত ফলাফল প্রদান করে।
উদাহরণ
// CPP implementation of the approach #include<bits/stdc++.h> using namespace std; // Function to return the count of // required index pairs int countPairs(int A[], int n){ // To store the required count int count = 0; int i,j,k; int max1=A[0]; int maxindex=0; for ( i = 0; i<n-1; i++){ for(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 of subsegments return count; } int main(){ int Arr[] = {3, 4, 6, 1, 5, 2}; int size =6; cout <<endl<<"Count of index pairs which satisfy the given condition:" <<countPairs(Arr,size); return 0; }
আউটপুট
Count of index pairs which satisfy the given condition:1