380
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
nnumere 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;
}
Comentarii