Check if empty spaces of Array can be filled maintaining given relations of adjacent

Given two arrays, array A[] of size N and array B[] of size N-1, array A has all the positive elements and -1 for the empty values and array B has 3 characters {ā>ā, ā=ā, ā<ā} which indicates the following:
- ā>ā means A[i] > A[i+1]
- ā=ā means A[i] = A[i+1]
- ā<ā means A[i] < A[i+1]
The task is to find if we can fill -1(empty values) of A with some positive values that also satisfy the relations between the adjacents mentioned in array B.
Examples:Ā
Input: N = 6, A = {8, 6, -1, -1, -1, 11}, B = {ā>ā, ā>ā, ā=ā, ā<ā, ā>ā}
Output: Yes
Explanation: Consider, A becomes {8, 6, 5, 5, 12, 11}, Ā
It satisfies B, so the answer will be āYesā.Input: N = 5, A = {4, 1, -1, -1, 7}, B = {ā<ā, ā<ā, ā<ā, ā<ā}
Output: No
Approach: The problem can be solved based on the following mathematical idea:
Use range to compare whether we can have a valid solution for a particular index and change the range accordingly.
Initially, the left range is 0 and the right range is INT_MAX.Ā
- If ā<ā operator is encountered, then the valid range for A[i+1] is left = A[i]+1 and right = INT_MAX.
- If ā>ā operator is encountered, then the valid range for A[i+1] is left = 0 and right = A[i] ā 1.
- If ā=ā operator is encountered, then the valid range for A[i+1] is left = A[i] and right = A[i]
- Values of ranges are changed when A[i] is given, but when A[i] = -1 ranges are compared and changed according to the above-mentioned conditions
- If left ? right and left ? 0 and right ? 0Ā is satisfied for each index position, then āYesā is returned, otherwise āNoā is returned.
Below is the implementation of the above approach.
C++
// C++ code for this approach#include <bits/stdc++.h>using namespace std;Ā
// Function to check whether array A// can be made such that all operator// of array B holds true for each index istring checkComparisons(int N, vector<int> A,Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā vector<char> B){Ā Ā Ā Ā // Declaring initial ranges as 0 to InfinityĀ Ā Ā Ā int left = 0, right = INT_MAX, index = 0;Ā Ā Ā Ā bool valid = 1;Ā Ā Ā Ā for (int i = 0; i < N - 1; i++, index++) {Ā
Ā Ā Ā Ā Ā Ā Ā Ā // If current element is not emptyĀ Ā Ā Ā Ā Ā Ā Ā if (A[i] != -1) {Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare normal elementsĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // (non empty i.e. != -1) based on BĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i + 1] != -1) {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] <= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] != A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] >= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update rangesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // for empty spacesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā else {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i] - 1;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i];Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i];Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i] + 1;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = INT_MAX;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā // If current element is emptyĀ Ā Ā Ā Ā Ā Ā Ā else {Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update ranges ifĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // next element is not emptyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i + 1] != -1) {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (right <= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if ((left > A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā || (right < A[i + 1]))Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left >= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update ranges ifĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // next element is empty based onĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // previous rangesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā else {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right--;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left++;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = INT_MAX;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā if (left > right)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā if (right < 0)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā if (left < 0)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā }Ā Ā Ā Ā return "Yes";}Ā
// Driver Codeint main(){Ā Ā Ā Ā int N = 6;Ā Ā Ā Ā vector<int> A{ 8, 6, -1, -1, -1, 11 };Ā Ā Ā Ā vector<char> B{ '>', '>', '=', '<', '>' };Ā
Ā Ā Ā Ā // Function callĀ Ā Ā Ā cout << checkComparisons(N, A, B);Ā Ā Ā Ā return 0;} |
Java
// Java code for this approachimport java.io.*;Ā
class GFG {Ā Ā Ā Ā // Function to check whether array AĀ Ā Ā Ā // can be made such that all operatorĀ Ā Ā Ā // of array B holds true for each index iĀ Ā Ā Ā public static String checkComparisons(int N, int A[],Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā char B[])Ā Ā Ā Ā {Ā Ā Ā Ā Ā Ā Ā Ā // Declaring initial ranges as 0 to InfinityĀ Ā Ā Ā Ā Ā Ā Ā int left = 0, right = Integer.MAX_VALUE, index = 0;Ā Ā Ā Ā Ā Ā Ā Ā boolean valid = true;Ā Ā Ā Ā Ā Ā Ā Ā for (int i = 0; i < N - 1; i++, index++) {Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // If current element is not emptyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] != -1) {Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare normal elementsĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // (non empty i.e. != -1) based on BĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i + 1] != -1) {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] <= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] != A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] >= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update rangesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // for empty spacesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā else {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i] - 1;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i];Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i];Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i] + 1;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = Integer.MAX_VALUE;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // If current element is emptyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā else {Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update ranges ifĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // next element is not emptyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i + 1] != -1) {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (right <= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if ((left > A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā || (right < A[i + 1]))Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left >= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update ranges ifĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // next element is empty based onĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // previous rangesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā else {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right--;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left++;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = Integer.MAX_VALUE;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left > right)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (right < 0)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left < 0)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā return "Yes";Ā Ā Ā Ā }Ā
Ā Ā Ā Ā // Driver CodeĀ Ā Ā Ā public static void main(String[] args)Ā Ā Ā Ā {Ā Ā Ā Ā Ā Ā Ā Ā int N = 6;Ā Ā Ā Ā Ā Ā Ā Ā int A[] = { 8, 6, -1, -1, -1, 11 };Ā Ā Ā Ā Ā Ā Ā Ā char B[] = { '>', '>', '=', '<', '>' };Ā
Ā Ā Ā Ā Ā Ā Ā Ā // Function callĀ Ā Ā Ā Ā Ā Ā Ā System.out.print(checkComparisons(N, A, B));Ā Ā Ā Ā }}Ā
// This code is contributed by Rohit Pradhan |
Python3
# Python code for this approach# Function to check whether array A# can be made such that all operator# of array B holds true for each index iimport sysdef checkComparisons(N, A, B):Ā Ā Ā Ā Ā # Declaring initial ranges as 0 to InfinityĀ Ā left = 0Ā Ā right = -sys.maxsize-1Ā Ā index = 0;Ā Ā valid = 1;Ā Ā for i in range (N-1):Ā Ā Ā Ā i = i + 1Ā Ā Ā Ā index = index + 1Ā Ā Ā Ā Ā Ā Ā Ā Ā # If current element is not emptyĀ Ā Ā Ā if (A[i] != -1):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā # Compare normal elementsĀ Ā Ā Ā Ā Ā # (non empty i.e. != -1) based on BĀ Ā Ā Ā Ā Ā if (A[i + 1] != -1):Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>'):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] <= A[i + 1]):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '='): Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] != A[i + 1]):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<'): Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] >= A[i + 1]):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā # Compare and update rangesĀ Ā Ā Ā Ā Ā # for empty spacesĀ Ā Ā Ā Ā Ā else: Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>'): Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i] - 1Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '='): Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i]Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i]Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<'): Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i] + 1Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = -sys.maxsize - 1Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā # If current element is emptyĀ Ā Ā Ā else: Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā # Compare and update ranges ifĀ Ā Ā Ā Ā Ā # next element is not emptyĀ Ā Ā Ā Ā Ā if (A[i + 1] != -1): Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>'): Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (right <= A[i + 1]):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '='): Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if ((left > A[i + 1]) or (right < A[i + 1])):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<'):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left >= A[i + 1]):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā Ā Ā # Compare and update ranges ifĀ Ā Ā Ā Ā Ā # next element is empty based onĀ Ā Ā Ā Ā Ā # previous rangesĀ Ā Ā Ā Ā Ā else:Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>'):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right=right-1Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<'):Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left=left+1Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = -sys.maxsize-1Ā Ā Ā Ā if (left > right):Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā if (right < 0):Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā if (left < 0):Ā Ā Ā Ā Ā Ā return "No"Ā Ā Ā Ā return "Yes"Ā Ā Ā # Driver CodeN = 6A = [8, 6, -1, -1, -1, 11]B = [ '>', '>', '=', '<', '>' ]Ā
# Function callprint(checkComparisons(N, A, B))Ā
# This code is contributed by Atul_kumar_Shrivastava |
C#
// C# implementation of above approachusing System;using System.Collections.Generic;Ā
class GFG {Ā
Ā Ā // Function to check whether array AĀ Ā // can be made such that all operatorĀ Ā // of array B holds true for each index iĀ Ā public static String checkComparisons(int N, int[] A,Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā char[] B)Ā Ā {Ā Ā Ā Ā // Declaring initial ranges as 0 to InfinityĀ Ā Ā Ā int left = 0, right = Int32.MaxValue, index = 0;Ā Ā Ā Ā bool valid = true;Ā Ā Ā Ā for (int i = 0; i < N - 1; i++, index++) {Ā
Ā Ā Ā Ā Ā Ā // If current element is not emptyĀ Ā Ā Ā Ā Ā if (A[i] != -1) {Ā
Ā Ā Ā Ā Ā Ā Ā Ā // Compare normal elementsĀ Ā Ā Ā Ā Ā Ā Ā // (non empty i.e. != -1) based on BĀ Ā Ā Ā Ā Ā Ā Ā if (A[i + 1] != -1) {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] <= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] != A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] >= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update rangesĀ Ā Ā Ā Ā Ā Ā Ā // for empty spacesĀ Ā Ā Ā Ā Ā Ā Ā else {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i] - 1;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i];Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i];Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i] + 1;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = Int32.MaxValue;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā // If current element is emptyĀ Ā Ā Ā Ā Ā else {Ā
Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update ranges ifĀ Ā Ā Ā Ā Ā Ā Ā // next element is not emptyĀ Ā Ā Ā Ā Ā Ā Ā if (A[i + 1] != -1) {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (right <= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if ((left > A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā || (right < A[i + 1]))Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left >= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update ranges ifĀ Ā Ā Ā Ā Ā Ā Ā // next element is empty based onĀ Ā Ā Ā Ā Ā Ā Ā // previous rangesĀ Ā Ā Ā Ā Ā Ā Ā else {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right--;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left++;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = Int32.MaxValue;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā if (left > right)Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā if (right < 0)Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā if (left < 0)Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā }Ā Ā Ā Ā return "Yes";Ā Ā }Ā
Ā Ā // Driver CodeĀ Ā public static void Main()Ā Ā {Ā Ā Ā Ā int N = 6;Ā Ā Ā Ā int[] A = { 8, 6, -1, -1, -1, 11 };Ā Ā Ā Ā char[] B = { '>', '>', '=', '<', '>' };Ā
Ā Ā Ā Ā // Function callĀ Ā Ā Ā Console.WriteLine(checkComparisons(N, A, B));Ā Ā }}Ā
// This code is contributed by sanjoy_62. |
Javascript
<script>Ā Ā Ā Ā // JavaScript code for this approachĀ
Ā Ā Ā Ā const INT_MAX = 2147483647;Ā Ā Ā Ā // Function to check whether array AĀ Ā Ā Ā // can be made such that all operatorĀ Ā Ā Ā // of array B holds true for each index iĀ Ā Ā Ā const checkComparisons = (N, A, B) => {Ā Ā Ā Ā Ā Ā Ā Ā // Declaring initial ranges as 0 to InfinityĀ Ā Ā Ā Ā Ā Ā Ā let left = 0, right = INT_MAX, index = 0;Ā Ā Ā Ā Ā Ā Ā Ā let valid = 1;Ā Ā Ā Ā Ā Ā Ā Ā for (let i = 0; i < N - 1; i++, index++) {Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // If current element is not emptyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] != -1) {Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare normal elementsĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // (non empty i.e. != -1) based on BĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i + 1] != -1) {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] <= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] != A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i] >= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update rangesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // for empty spacesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā else {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i] - 1;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i];Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = A[i];Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = A[i] + 1;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = INT_MAX;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // If current element is emptyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā else {Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update ranges ifĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // next element is not emptyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (A[i + 1] != -1) {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (right <= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '=') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if ((left > A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā || (right < A[i + 1]))Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left >= A[i + 1])Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // Compare and update ranges ifĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // next element is empty based onĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā // previous rangesĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā else {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '>') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left = 0;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right--;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (B[index] == '<') {Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā left++;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā right = INT_MAX;Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left > right)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (right < 0)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā if (left < 0)Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā return "No";Ā Ā Ā Ā Ā Ā Ā Ā }Ā Ā Ā Ā Ā Ā Ā Ā return "Yes";Ā Ā Ā Ā }Ā
Ā Ā Ā Ā // Driver CodeĀ
Ā Ā Ā Ā let N = 6;Ā Ā Ā Ā let A = [8, 6, -1, -1, -1, 11];Ā Ā Ā Ā let B = ['>', '>', '=', '<', '>'];Ā
Ā Ā Ā Ā // Function callĀ Ā Ā Ā document.write(checkComparisons(N, A, B));Ā
Ā Ā Ā Ā // This code is contributed by rakeshsahniĀ
</script> |
Yes
Time Complexity: O(N)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!


