## Problem Statement

Given an array **arr[]** containing positive elements. A and B are two numbers defining a range. The task is to check if the array contains all elements in the given range.

**Example 1:**

Input:N = 7, A = 2, B = 5 arr[] = {1, 4, 5, 2, 7, 8, 3}Output:YesExplanation: It has elements between range 2-5 i.e 2,3,4,5

**Example 2:**

Input:N = 7, A = 2, B = 6 arr[] = {1, 4, 5, 2, 7, 8, 3}Output:NoExplanation: Array does not contain 6.

**Your Task:**

This is a function problem. You don’t need to take any input, as it is already accomplished by the driver code. You just need to complete the function **check_elements**() that takes array** arr, **integer** N, **integer** A, **and integer** B ** as parameters and returns the boolean True if array elements contain all elements in the given range else boolean False.

**Note:** If the array contains all elements in the given range then driver code outputs **Yes** otherwise, it outputs **No**

**Expected Time Complexity:** O(N).**Expected Auxiliary Space:** O(1).

**Constraints:**

1 ≤ N ≤ 10^{7}

## Solution

bool check_elements(int arr[], int n, int A, int B) { if(n<=B-A) return false; for(int i=0; i<n; i++){ if(abs(arr[i])>=A && abs(arr[i])<=B){ int index = abs(arr[i])-A; if(arr[index]>0) arr[index]=arr[index]*-1; } } for(int i=0; i<=B-A; i++){ if(arr[i]>0) return false; } return true; }

**write for us**page.