1911 - Sort Indici

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dă un vector cu n elemente, numere naturale. Afișați în ordine crescătoare elementele iar după fiecare element, inserați indicele poziției pe care acesta se află înainte ca vectorul să fie sortat. Daca există mai multe elemente cu aceeași valoare, indicii acestora se vor afișa în ordine crescătoare.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran șirul de numere separate prin spațiu, respectând cerința cerută.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 100
  • cele n numere citite vor fi mai mici decât 1.000.000.000
  • numerotarea vectorului începe de la 1

Exemplul 1[edit | edit source]

Intrare
7
12 8 9 0 19 2 8
Ieșire
0 4 2 6 8 2 8 7 9 3 12 1 19 5


Exemplul 2[edit | edit source]

Intrare
0
Ieșire
Datele de intrare nu corespund restricțiilor impuse.



Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 1911 - Sort Indici

def sortare_inserare_indice(v):

   n = len(v)                                   # lungimea vectorului
   first = [(v[i], i+1) for i in range(n)]      # lista de tupluri (element, index)
   first.sort()                              # sortarea primei liste, crescător după elemente
   rezultat =                              # șirul în care se vor construi elementele sortate
   for val, index in first:                  # se parcurge fiecare tuplu din prima listă
       rezultat += f'{val} {v.index(val)+1} '   # se adaugă elementul și poziția sa în vector
   return rezultat.strip()                      # se returnează șirul format

if __name__== '__main__':

   n = int(input())                             # citirea numărului de elemente
   v = list(map(int, input().split()))          # citirea vectorului
   print(sortare_inserare_indice(v))            # afișarea elementelor sortate și pozițiilor lor
   print("Datele de intrare corespund restricțiilor impuse.")

else:

   print("Nu au fost respectate restricțiile impuse.")

</syntaxhighlight>