Given two optimistic integer arrays X[] and Y[] of dimension N, The place all parts of X[] are distinct. Contemplating all the weather of X[] are mendacity aspect by aspect initially on a line, the duty is to seek out the minimal variety of operations required such that parts in X[] turns into in rising order the place in one operation you may enhance every ingredient of X[] by their respective values index in Y[] (first ingredient of X[] ingredient may be incremented by the primary ingredient of Y[] or place of the second ingredient of X[] may be incremented by the second ingredient of Y[] or so on….).
Examples:
Enter: N = 3, X[] = {3, 2, 1}, Y[] = {1, 1, 1}
Output: 6
Clarification: Based on the issue assertion:
- X[1] = 3, It’s place may be incremented by Y[1] = 1.
- X[2] = 2, It’s place may be incremented by Y[2] = 1.
- X[3] = 1, It’s place may be incremented by Y[3] = 1.
- Operations:
- In two operations, X[2] = 2, incremented its place by Y[2] = 1 in every operation from place 1 to 2 after which 2 to 3 by utilizing operations one after the other.
- In 4 operations, X[1] = 3, incremented its place by Y[1] = 1 in every operation from place 0 to 1, 1 to 2, 2 to 3 after which 3 to 4 in final operation. Every operation is carried out one after the other.
- Now, It may be verified that every one the weather of X[] are in sorted order of their values, for this case Minimal variety of operations are=2 + 4 = 6, Which is minimal attainable.
![]()
Teset case 1
Enter: N = 4, X[] = {2, 1, 4, 3}, Y[] = {4, 1, 2, 4}
Output: 5
Clarification: Based on the issue assertion:
- X[1] = 2, It’s place may be incremented by Y[1] = 4.
- X[2] = 1, It’s place may be incremented by Y[2] = 1.
- X[3] = 4, It’s place may be incremented by Y[3] = 2.
- X[4] = 3, It’s place may be incremented by Y[4] = 4.
- Operations:
- In one operation, X[4] = 3, incremented its place by Y[4] = 4, in every operation from place 3 to 7.
- In one operation, X[1] = 2, incremented its place by Y[1] = 4 in every operation from place 0 to 3.
- In three operations, X[3] = 4, incremented its place by Y[3] = 2 in every operation from place 2 to 4, 4 to 6 after which 6 to 8 in every operation one after the other.
- Due to this fact, Whole minimal variety of operations for this case are= 1 + 1 + 3 = 5. It may be verified that every one the weather of X[] are in sorted order of their values after performing above operations.
![]()
Check case 2
Strategy: Implement the thought beneath to resolve the issue
The issue is remark primarily based and may be remedy by utilizing Grasping Method. The essential concept of the issue is that, we have now to decide on optimum ingredient to increment it’s place in ach operation.
Steps had been taken to resolve the issue:
- Create two arrays positions[] and temp_length[] of size N for storing positions and non permanent lengths of parts of X[].
- Create integer variable operations and initialize it equal to 0.
- Initialize positions[] with positions[X[i] – 1] = i, by utilizing a loop from i=0 to lower than N.
- Initialize temp_length[] with temp_lengthX[i] – 1] = Y[i], by utilizing a loop from i=0 to lower than N.
- Iterate from i = 1 to lower than N utilizing loops and observe the below-mentioned steps beneath the scope of the loop:
- Whereas(place[i] ≤ place[i-1]), until then place[i] += temp_length[i] and operations++.
- Return operations.
Under is the code to implement the method:
Java
// Java code to implement the method import java.io.*; import java.lang.*; import java.util.*; class GFG { // Driver Perform public static void most important(String[] args) throws java.lang.Exception { // Enter worth of N int N = 4; // Enter array X[] int X[] = { 2, 1, 4, 3 }; // Enter array Y[] int Y[] = { 4, 1, 2, 4 }; // Perform name System.out.println(min_operations(N, X, Y)); } // Perform for returning minimal // variety of operations static int min_operations(int N, int[] X, int[] Y) { // Array to retailer positions // of parts int[] place = new int[N]; // Array to retailer temp_length int[] temp_length = new int[N]; // Variable to carry minimal quantity // of operations int operations = 0; // Loop for initializing positions for (int i = 0; i < N; i++) { place[X[i] - 1] = i; } // Loop for initializing // temp_length for (int i = 0; i < N; i++) { temp_length[X[i] - 1] = Y[i]; } // Loop for calculating quantity // of operations for (int i = 1; i < N; i++) { whereas (place[i] <= place[i - 1]) { place[i] += temp_length[i]; operations++; } } // Returning variety of operations return operations; } }
Time Complexity: O(N)
Auxiliary House: O(N)