Rezolvare completă PbInfo #513 KSort1

Cerința

Se dă un șir cu n elemente, numere naturale, numerotate începând cu 1 și un număr k. Considerăm k subșiruri ale șirului, astfel:

  • primul subșir este format din elementele din șir numerotate cu 1, k+1, 2*k+1, …
  • al doilea subșir este format din elementele din șir numerotate cu 2, k+2, 2*k+2, …
  • al k-lea subșir este format din elementele din șir numerotate cu k, 2*k, 3*k, …

Ordonați crescător fiecare dintre aceste subșiruri și afișați șirul obținut.

Date de intrare

Programul citește de la tastatură numerele n și k, iar apoi n numere naturale, reprezentând elementele șirului.

Date de ieșire

Programul va afișa pe ecran elementele șirului, separate prin exact un spațiu, după efectuarea operațiilor cerute.

Restricții și precizări

  • 1 ≤ k < n ≤ 1000
  • cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu

Intrare

11 3
7 5 4 3 1 6 8 9 11 10 2 

Ieșire

3 1 4 7 2 6 8 5 11 10 9

Explicație

Cele trei subșiruri sunt: (7 3 8 10), (5 1 9 2) și (4 6 11). După sortare, ele devin: (3 7 8 10), (1 2 5 9) și (4 6 11).

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 KSort1:

#include <iostream>
using namespace std;

int main(){
    int n , k, x[1005];
    cin  >> n >> k; 
    for(int i = 1 ; i <= n ; ++ i)
        cin >> x[i];
    for(int p = 1 ; p <= k ; ++p)
    {
        for(int i = p ; i < n ; i += k)
            for(int j = i + k; j <= n ; j += k)
                if(x[i] > x[j])
                {
                    int aux = x[i];
                    x[i] = x[j];
                    x[j] = aux;
                }
    }
    for(int i = 1 ; i <= n ; ++ i)
        cout << x[i] << " ";
    return 0;
}

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 Adresa de email.

Rezolvarea problemei #513 KSort1

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #513 KSort1 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!