Ambiguous Permutations Codechef Solution

Hello Programmers In this post, you will know how to solve the Ambiguous Permutations Codechef Solution. The Problem Code is RECIPE.

Ambiguous Permutations Codechef Solution
Ambiguous Permutations Codechef Solution

One more thing to add, don’t directly look for the solutions, first try to solve the problems of Codechef by yourself. If you find any difficulty after trying several times, then you can look for solutions.

Ezoicreport this adProblem

Some programming contest problems are really tricky: not only do they require a different output format from what you might have expected, but also the sample output does not show the difference. For an example, let us look at permutations.

permutation of the integers 1 to n is an ordering of these integers. So the natural way to represent a permutation is to list the integers in this order. With n = 5, a permutation might look like 2, 3, 4, 5, 1.

However, there is another possibility of representing a permutation: You create a list of numbers where the i-th number is the position of the integer i in the permutation. Let us call this second possibility an inverse permutation. The inverse permutation for the sequence above is 5, 1, 2, 3, 4.

An ambiguous permutation is a permutation which cannot be distinguished from its inverse permutation. The permutation 1, 4, 3, 2 for example is ambiguous, because its inverse permutation is the same. To get rid of such annoying sample test cases, you have to write a program which detects if a given permutation is ambiguous or not.

Input Specification 

The input contains several test cases.

The first line of each test case contains an integer n (1 ≤ n ≤ 100000). Then a permutation of the integers 1 to n follows in the next line. There is exactly one space character between consecutive integers. You can assume that every integer between 1 and n appears exactly once in the permutation.

The last test case is followed by a zero.

Output Specification

For each test case output whether the permutation is ambiguous or not. Adhere to the format shown in the sample output.

Sample Input

4
1 4 3 2
5
2 3 4 5 1
1
1
0

Sample Output 

ambiguous
not ambiguous
ambiguous

Ambiguous Permutations CodeChef Solution in Python

n = int(input())
while(n != 0):
    li = [int(i) for i in input().split()]
    li1 = list('0' * len(li))
    for i in range(len(li)):
        li1[li[i] - 1] = i + 1
    if(li == li1):
        print("ambiguous")
    else:
        print("not ambiguous")
    n = int(input()) 

Ambiguous Permutations CodeChef Solution in CPP

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    int n,a[100001],i;
    while(1)
    {
        scanf("%d",&n);
        if(n==0)break;
        for(i=1;i<=n;i++)
             scanf("%d",&a[i]);
        for(i=1;i<=n;i++)
        {
            if(a[a[i]]!=i){printf("not ambiguous \n");break;}
            if(i==n)printf("ambiguous \n");
        }
    }
    return 0;
}

Disclaimer: The above Problem (Ambiguous Permutationsis generated by CodeChef but the solution is provided by BrokenProgrammers. This tutorial is only for Educational and Learning purpose.

Note:- I compile all programs, if there is any case program is not working and showing an error please let me know in the comment section. If you are using adblocker, please disable adblocker because some functions of the site may not work correctly.

Next: Cutting Recipes Codechef Solution

Sharing Is Caring

Leave a Comment

Ezoicreport this ad