# PBinfo #513 – KSort1 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

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

## Cod sursă C++

```cpp
#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;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/513)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/513/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-513/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
