Cerința
Se dau înălțimile a n
copii, numerotați de la 1
la n
, exprimate prin numere naturale. Afișați numerele de ordine ale copiilor în ordinea crescătoare a înălțimii lor.
Pentru sortare se va folosit metoda QuickSort sau MergeSort.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi n
numere naturale, separate prin spații, reprezentând, în ordine, înălțimile copiilor.
Date de ieșire
Programul va afișa pe ecran n
numere naturale distincte cuprinse între 1
și n
, separate prin exact un spațiu, reprezentând numerele de ordine ale copiilor în ordinea crescătoare a înălțimii.
Restricții și precizări
1 ≤ n ≤ 1000
- înălțimile copiilor vor fi numere naturale distincte din intervalul
[1 , 10000]
Exemplu
Intrare
7 8 20 16 14 10 4 12
Ieșire
6 1 5 7 4 3 2
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema InaltimiQ:
#include <iostream>
using namespace std;
int n;
struct elev
{
int inaltime, indice;
};
elev v[1005];
void sortare(elev *v, int st, int dr);
int main(){
cin>>n;
for(int i = 1; i <= n ; i++)
cin>>v[i].inaltime, v[i].indice = i;
sortare(v, 1, n);
for(int i = 1; i <= n ; i++)
cout<<v[i].indice<<" ";
return 0;
}
void sortare(elev v[], int st, int dr)
{
if(st < dr)
{
int i = st, j = dr, d = 0;
while( i < j)
{
if(v[i].inaltime > v[j].inaltime)
{
elev aux = v[i];
v[i] = v[j];
v[j] = aux;
if(d == 0)
d = 1;
else
d = 0;
}
if(d == 0)
j--;
else
i++;
}
int k = i;
sortare(v, st, k -1);
sortare (v, k+1, dr);
}
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1156 InaltimiQ
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1156 InaltimiQ de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!