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 cuk
,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ât1.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; }