1911 - Sort Indici: Difference between revisions
Adina Timiș (talk | contribs) Pagină nouă: == Cerința == 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 == Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații. == Date de ieșire == P... |
Adina Timiș (talk | contribs) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
Programul va afișa pe ecran șirul de numere separate prin spațiu, respectând cerința cerută. | Programul va afișa pe ecran șirul de numere separate prin spațiu, respectând cerința cerută. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
:1 ≤ n ≤ 100 | :* 1 ≤ n ≤ 100 | ||
:cele n numere citite vor fi mai mici decât 1.000.000.000 | :* cele n numere citite vor fi mai mici decât 1.000.000.000 | ||
:numerotarea vectorului începe de la 1 | :* numerotarea vectorului începe de la 1 | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
Line 25: | Line 25: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
#1911 - Sort Indici | #1911 - Sort Indici | ||
def sortare_inserare_indice(v): | def sortare_inserare_indice(v): | ||
n = len(v) | n = len(v) # lungimea vectorului | ||
first = [(v[i], i+1) for i in range(n)] | first = [(v[i], i+1) for i in range(n)] # lista de tupluri (element, index) | ||
first.sort() | first.sort() # sortarea primei liste, crescător după elemente | ||
rezultat = '' | rezultat = '' # șirul în care se vor construi elementele sortate | ||
for val, index in first: | for val, index in first: # se parcurge fiecare tuplu din prima listă | ||
rezultat += f'{val} {v.index(val)+1} ' | rezultat += f'{val} {v.index(val)+1} ' # se adaugă elementul și poziția sa în vector | ||
return rezultat.strip() | return rezultat.strip() # se returnează șirul format | ||
if __name__== '__main__': | if __name__== '__main__': | ||
n = int(input()) | n = int(input()) # citirea numărului de elemente | ||
v = list(map(int, input().split())) | v = list(map(int, input().split())) # citirea vectorului | ||
print(sortare_inserare_indice(v)) | print(sortare_inserare_indice(v)) # afișarea elementelor sortate și pozițiilor lor | ||
print("Datele de intrare corespund restricțiilor impuse.") | print("Datele de intrare corespund restricțiilor impuse.") | ||
else: | else: | ||
print("Nu au fost respectate restricțiile impuse.") | print("Nu au fost respectate restricțiile impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 20:17, 5 April 2023
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">
- 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>