3156 - perm min max
Cerința[edit | edit source]
Se citește o mulțime cu n numere naturale. Afișați în ordine lexicografică toate permutările mulțimii citite în care elementul minim și cel maxim nu își schimbă poziția.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale distincte, separate prin spații.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran permutările cerute, pe rânduri separate, fiecare permutare având elementele separate prin câte un spațiu.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 10
- cele n numere citite vor fi mai mici decât 1.000.000.000 și vor fi distincte
Exemplu 1[edit | edit source]
- Intrare
6
8 2 7 9 4 5
- Iesire
4 2 5 9 7 8
4 2 5 9 8 7
4 2 7 9 5 8
4 2 7 9 8 5
4 2 8 9 5 7
4 2 8 9 7 5
5 2 4 9 7 8
5 2 4 9 8 7
5 2 7 9 4 8
5 2 7 9 8 4
5 2 8 9 4 7
5 2 8 9 7 4
7 2 4 9 5 8
7 2 4 9 8 5
7 2 5 9 4 8
7 2 5 9 8 4
7 2 8 9 4 5
7 2 8 9 5 4
8 2 4 9 5 7
8 2 4 9 7 5
8 2 5 9 4 7
8 2 5 9 7 4
8 2 7 9 4 5
8 2 7 9 5 4
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> from itertools import permutations
def main():
n = int(input()) arr = list(map(int, input().split()))
min_value = min(arr) max_value = max(arr)
min_index = arr.index(min_value) max_index = arr.index(max_value)
# To store the results results = set()
# Generate permutations for perm in permutations(arr): if perm[min_index] == min_value and perm[max_index] == max_value: results.add(perm)
# Sort results lexicographically results = sorted(results)
# Print results for result in results: print(" ".join(map(str, result)))
if __name__ == "__main__":
main()
</syntaxhighlight>