fbpx

Problema #513 – KSort1 – Rezolvari PBInfo

de Mihai-Alexandru

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).

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n , a[1001] , v[1001] , p=0;
    cin >> n;
    int k;
    cin >> k;
    for(int i = 0 ; i < n ; ++i)
        cin >> a[i];
    for(int i = 0; i < k ; ++i)
    {
        p=0;
        for(int j = i ; j < n; j+=k)
        {
            v[p]=a[j];
            p++;
        }
        sort(v , v+p);
        p=0;
        for(int j = i ; j < n ; j+=k)
        {
            a[j] = v[p];
            p++;
        }
    }
     for(int i = 0; i < n ; ++i)
        cout << a[i]<<" ";
    return 0;
}
Comentarii

S-ar putea sa iti placa