Computer >> Máy Tính >  >> Lập trình >> C ++

Truy vấn để trả về sự khác biệt tuyệt đối giữa số nhỏ nhất thứ L và số nhỏ nhất thứ R trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình tìm các truy vấn để trả về sự khác biệt tuyệt đối giữa số nhỏ nhất thứ L và số nhỏ nhất thứ R.

Đối với điều này, chúng tôi sẽ được cung cấp một mảng chứa các số nguyên và truy vấn Q. Nhiệm vụ của chúng tôi là tìm ra sự khác biệt tuyệt đối giữa các chỉ số của giá trị nhỏ nhất thứ L và giá trị nhỏ nhất thứ R.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//returning the result of a query
int respondingQuery(pair<int, int> arr[], int l, int r) {
   int result = abs(arr[l - 1].second - arr[r - 1].second);
   return result;
}
//implementing the queries
void calcDifference(int givenarr[], int a, int q[][2], int b){
   pair<int, int> arr[a];
   for (int i = 0; i < a; i++) {
      arr[i].first = givenarr[i];
      arr[i].second = i;
   }
   sort(arr, arr + a);
   for (int i = 0; i < b; i++)
      cout << respondingQuery(arr, q[i][0], q[i][1]) <<
   endl;
}
int main() {
   int arr[] = { 1, 7, 4, 2, 8};
   int arraySize = sizeof(arr) / sizeof(arr[0]);
   int query[][2] = { { 2, 7 }, { 4, 8 }, { 1, 2 }, { 8, 1 }};
   int querySize = sizeof(query) / sizeof(query[0]);
   calcDifference(arr, arraySize, query, querySize);
   return 0;
}

Đầu ra

3
32763
3
32764