Cerința
Se dă un şir v
cu n
elemente numere reale
. Acesta se împarte în n/k
secvenţe de k
elemente. Să se sorteze fiecare secvenţă şi să se afişeze şirul format de acestea, în ordinea în care au fost date.
Date de intrare
Fișierul de intrare r10.in
conține pe prima linie numărul n
, şi numărul k
, iar pe a doua linie n
numere reale
separate prin spații.
Date de ieșire
Fișierul de ieșire r10.out
va conține pe prima linie şirul cerut.
Restricții și precizări
1 ≤ n ≤ 100.000
1 ≤ k ≤ 25.000
k
îl divide pen
- numerele de pe a doua linie a fișierului de intrare, în modul, vor fi mai mici decât
1.000.000.000
Exemplu 1:
r10.in
10 2 10 9 8 7 6 5 4 3 2 1
r10.out
9 10 7 8 5 6 3 4 1 2
Explicație
Şirul a fost împărţit în grupări de câte două, ele fiind sortate şi afişate în ordinea primită.
Exemplu 2:
r10.in
10 10 9.1 6 2 -1.5 6.9 10 11 1000 -101.5123 880.45
r10.out
-101.512 -1.5 2 6 6.9 9.1 10 11 880.45 1000
Explicație
Acest exemplu conţine numere reale
, nu neapărat întregi.
Exemplu 3:
r10.in
10 1 10 9 8 7 6 5 4 3 2 1
r10.out
10 9 8 7 6 5 4 3 2 1
Explicație
Pentru k = 1
, şirul rămâne la fel.
Exemplu 4:
r10.in
9 3 82 85 78 69 84 69 101 82 97
r10.out
78 82 85 69 69 84 82 97 101
Explicație
Un ultim exemplu bonus.
#include <bits/stdc++.h> using namespace std; ifstream cin("r10.in"); ofstream cout("r10.out"); double a[30001]; int n , k; int main() { cin >> n >> k ; for(int i = 1 ; i <= n / k ; i++) { for(int j = 1 ; j <= k ; j++) cin >> a[j]; sort(a + 1, a + k + 1); for(int j = 1 ; j <= k ; j++) cout << a[j] << " "; } }