Xây dựng hàm cmp cho sort 2
Số nguyên tố đầu tiên (cmp)
Nộp bàiPoint: 1
Cho dãy số A. Hãy đưa các số nguyên tố ra đầu dãy (tăng dần), các số không phải nguyên tố về cuối dãy (tăng dần).
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N số nguyên dương A[i].
Dữ liệu ra:
Dãy số đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
1 <= A[i] <= 10^6
Ví dụ:
Input:
5
4 3 7 10 2
Output:
2 3 7 4 10
Dãy số âm dương (cmp)
Nộp bàiPoint: 1
Mô tả: Sắp xếp dãy số sao cho: Số âm đứng trước (giảm dần về giá trị), số 0 ở giữa, số dương đứng cuối (giảm dần về giá trị).
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N số nguyên A[i].
Dữ liệu ra:
Dãy số đã sắp xếp.
Ràng buộc:
1 <= N <= 10^5
|A[i]| <= 10^9
Ví dụ:
Input:
6
2 -5 0 4 -1 0
Output:
-1 -5 0 0 4 2
Ưu tiên chính phương (cmp)
Nộp bàiPoint: 1
Mô tả: Sắp xếp dãy số sao cho các số chính phương đứng trước (tăng dần), các số còn lại đứng sau (tăng dần).
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N số nguyên dương A[i].
Dữ liệu ra:
Dãy số đã sắp xếp.
Ràng buộc:
1 <= N <= 10^5
1 <= A[i] <= 10^9
Ví dụ:
Input:
5
5 4 9 2 1
Output:
1 4 9 2 5
Độ dài chuỗi (cmp)
Nộp bàiPoint: 1
Cho danh sách N từ. Hãy sắp xếp các từ theo độ dài tăng dần. Nếu hai từ có cùng độ dài, giữ nguyên thứ tự xuất hiện ban đầu (hoặc sắp xếp theo từ điển nếu muốn luyện thêm, ở bài này ta chọn sắp xếp theo từ điển).
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N từ, mỗi từ cách nhau bởi dấu cách.
Dữ liệu ra:
Các từ đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
Độ dài mỗi từ <= 100
Ví dụ:
Input:
4
code c++ is fun
Output:
is c++ fun code
Tổng Chữ Số Tăng Dần (cmp)
Nộp bàiPoint: 1
Cho dãy số nguyên dương A. Hãy sắp xếp dãy số này sao cho tổng các chữ số của từng số tăng dần. Nếu tổng các chữ số bằng nhau, số nào có giá trị gốc nhỏ hơn sẽ đứng trước.
Dữ liệu vào:
Dòng 1: Số nguyên dương N.
Dòng 2: N số nguyên A[i].
Dữ liệu ra:
Dãy số sau khi sắp xếp.
Ràng buộc:
1 <= N <= 1000
1 <= A[i] <= 10^9
Ví dụ:
<h7>Input:</h7>4
12 30 100 23
Output:
100 12 30 23
Chữ số tận cùng (cmp)
Nộp bàiPoint: 1
Hãy sắp xếp dãy số theo thứ tự tăng dần của chữ số tận cùng. Nếu chữ số tận cùng bằng nhau, số lớn hơn đứng trước.
Dữ liệu vào:
Dòng 1: Số nguyên dương N.
Dòng 2: N số nguyên A[i].
Dữ liệu ra:
Dãy số đã sắp xếp.
Ràng buộc:
1 <= N <= 10^5
0 <= A[i] <= 10^9
Ví dụ:
Input:
5
15 32 104 22 9
Output:
32 22 104 15 9
Sắp xếp theo tổng các chữ số (cmp)
Nộp bàiPoint: 1
Sắp xếp dãy số theo thứ tự tăng dần của tổng các chữ số. Nếu tổng các chữ số bằng nhau, số nào có giá trị nhỏ hơn sẽ đứng trước.
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N số nguyên dương A[i].
Dữ liệu ra:
Dãy số đã sắp xếp.
Ràng buộc:
1 <= N <= 10^5
1 <= A[i] <= 10^9
Ví dụ:
Input:
4
12 30 100 23
Output:
100 12 30 23
Giải thích: Tổng chữ số lần lượt là 1, 3, 3, 5. Số 12 và 30 có cùng tổng là 3 nhưng 12 < 30.
Sắp xếp theo tổng số lượng các ước số (cmp)
Nộp bàiPoint: 1
Mô tả: Sắp xếp dãy số theo số lượng ước số của chúng giảm dần. Nếu hai số có cùng số lượng ước, số lớn hơn đứng trước.
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N số nguyên dương A[i].
Dữ liệu ra:
Dãy số đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
1 <= A[i] <= 10000
Ví dụ:
Input:
3
4 6 7
Output:
6 4 7
Giải thích: 6 có 4 ước, 4 có 3 ước, 7 có 2 ước.
Từ điển ngược (cmp)
Nộp bàiPoint: 1
Sắp xếp danh sách các chuỗi ký tự theo thứ tự từ điển giảm dần (Z -> A).
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N chuỗi ký tự.
Dữ liệu ra:
Các chuỗi đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
Ví dụ:
Input:
3
Lan Hoa Mai
Output:
Mai Lan Hoa
Ghép số lớn nhất (cmp)
Nộp bàiPoint: 1
Cho N chuỗi số. Hãy sắp xếp các chuỗi này sao cho khi ghép chúng lại liên tiếp nhau, ta được một số tự nhiên có giá trị lớn nhất. (Ví dụ: "9" và "92", ghép "9"+"92"="992" lớn hơn "92"+"9"="929" nên "9" đứng trước).
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N chuỗi số.
Dữ liệu ra:
In ra số lớn nhất tạo được (ghép các chuỗi sau khi sort).
Ràng buộc:
1 <= N <= 100
Độ dài chuỗi <= 100
Ví dụ:
Input:
2
9 92
Output:
992