In this HackerEarth Inverse List problem solution, There are many ways to order a list of integers from 1 to n. For example, if n = 3, the list could be : [3 1 2].
But there is a special way to create another list from the given list of integers. In this list, the position of the integer i is the ith number in the given list. So following this rule, the given list will be written as: [2 3 1]. This list is called the inverse list. Now there exists some list whose inverse list is identical. For example, the inverse list of [1 2 3] is the same as the given list. Given a list of integers you have to determine whether the list is inverse or not.
The input contains several test cases. The first line is the number of test cases t (1 <= t <= 100). The first line of each test case contains an integer n (1 <= n <= 10000). Then a list of the integers 1 to n follows in the next line.
HackerEarth Inverse List problem solution.
#include <bits/stdc++.h>
using namespace std;
int org [100000 + 10];
int arr [100000 + 10];
int main()
{
int n , t;
cin >> t ;
while( t-- ){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> org[i];
arr[ org[i] ] = i;
}
bool revers = true;
for(int i = 1; i <= n; i++){
if(org[i] != arr[i]){
revers = false;
break;
}
}
if(revers) cout << "inverse\n";
else cout << "not inverse\n";
}
return 0;
}
0 Comments