समस्या विवरण
हमें एक संख्या सरणी दी गई है। लक्ष्य उन जोड़ों (i,j) की गणना करना है जहाँ i*arr[i] > j*arr[j] और i < j।
उदाहरण
इनपुट: arr[] = [1,5,4,1,2,8,3]
आउटपुट: 3
व्याख्या: जोड़े: (5,1), (4,1), (8,3) — इंडेक्स-मान गुणनफल के आधार पर
इनपुट: arr[] = [-1,-2,3,4,5,6]
आउटपुट: 1
व्याख्या: जोड़ा: (-1,-2)
दृष्टिकोण
दो नेस्टेड लूप: i=0 से size-2 और j=i+1 से size-1। यदि i*arr[i] > j*arr[j] तो गणना बढ़ाएँ।
एल्गोरिदम
- प्रारंभिक
count = 0 i = 0सेsize-2तक:j = i+1सेsize-1तक:- यदि
i*arr[i] > j*arr[j]तोcount++
- यदि
countलौटाएँ
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
int condition_pair(int arr[], int size) {
int count = 0;
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (i * arr[i] > j * arr[j])
count++;
}
}
return count;
}
int main() {
int arr[] = {2, 4, 1, 9, 6};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Count: " << condition_pair(arr, size);
return 0;
}
आउटपुट
Count: 2