Xây dựng cmp trong hàm sort
Sắp xếp theo tổng chữ số (sắp xếp)
Nộp bàiPoint: 1
Cho một mảng A các số nguyên gồm N phần tử. Sắp xếp các phần tử trong mảng A theo tổng chữ số trong một phần tử tăng dần. Nếu 2 số có cùng tổng chữ số thì số nào nhỏ hơn in ra trước.
Ràng buộc: ~1 \leq N \leq 2.10^5~; ~1 \leq A[i] \leq 10^9~
input:
7
100 101 1 2 400 4 202
Output:
1 100 2 101 4 202 400
Sắp xếp sao cho số chẵn đứng trước, lẻ đứng sau, chẵn giảm dần, lẻ tăng dần
Nộp bàiPoint: 1
Cho một mảng a gồm n phần tử là số nguyên. Sắp xếp sao cho số chẵn đứng trước, lẻ đứng sau, chẵn giảm dần, lẻ tăng dần
Đầu vào: Dòng đầu tiên là số lượng phần tử n, dòng tiếp theo là n phần tử của mảng
--
Ràng buộc: 1 <= n <= 1000000; 0 <= a[i] <= 1000000
Đầu ra: In ra mảng đã sắp xếp theo tiêu chí trên
Input:
10
1 2 10 9 6 5 8 7 4 3
Output:
10 8 6 4 2 1 3 5 7 9
Sắp xếp các xâu theo độ dài
Nộp bàiPoint: 1
Cho một danh sách gồm N xâu ký tự, hãy sắp xếp lại các xâu đó theo thứ tự xâu nào dài hơn sắp xếp lên trước, nếu các xâu có độ dài bằng nhau thì xâu nào có thứ tự từ điển nhỏ hơn sẽ được sắp xếp lên trước.
Ràng buộc: ~0 < N \leq 10^6~
Input 01:
3
ab abcde abc
Output 01:
abcde abc ab
Input 02:
6
abc efghi abcdef abcde 123 abc1234
Output 02:
abc1234 abcdef abcde efghi 123 abc
Sắp xếp theo tuần suất (sắp xếp - tìm kiếm)
Nộp bàiPoint: 1
Cho mảng A gồm n các số nguyên dương. Bạn hãy thực hiện các thao tác sau đây:
Sắp xếp các phần tử trong mảng A theo tần suất giảm dần, nếu 2 số có cùng tần suất thì số nào nhỏ hơn sẽ sắp xếp lên trước
Sắp xếp các phần tử trong mảng A theo tần suất giảm dần, nếu 2 số có cùng tần suất thì số nào xuất hiện trước sẽ in ra trước
Ràng buộc: 1 <= n <= 10^6; 0 <= A[i] <= 10^6
Input:
10
6 8 4 10 3 4 10 2 4 1
Output:
4 4 4 10 10 1 2 3 6 8
4 4 4 10 10 6 8 3 2 1
Sắp xếp theo giá trị tuyệt đối (sắp xếp)
Nộp bàiPoint: 1
Cho mảng A có N phần tử là các số nguyên. Hãy sắp xếp lại mảng theo giá trị tuyệt đối tăng dần. Lưu ý nếu phần tử đã đứng ở đúng vị trí thì không được sắp xếp lại.
Ràng buộc: ~1 \leq N \leq 2.10^5~; ~-10^9 \leq A[i] \leq 10^9~
Input:
5
1 -3 2 -5 -1
Output:
1 -1 2 -3 -5
Sắp Xếp Ngược (cmp)
Nộp bàiPoint: 1
Cho một dãy số nguyên A gồm N phần tử. Hãy sắp xếp dãy số này theo thứ tự giảm dần (từ lớn đến bé).
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:
In ra dãy số sau khi đã sắp xếp, các số cách nhau một dấu cách.
Ràng buộc:
1 <= N <= 10^5
|A[i]| <= 10^9
Ví dụ:
Input:
5
1 5 3 2 4
Output:
5 4 3 2 1
Sắp Xếp Theo Số Dư (cmp)
Nộp bàiPoint: 1
Cho dãy số nguyên dương A. Hãy sắp xếp dãy số sao cho số dư của chúng khi chia cho 3 tăng dần. Nếu hai số có cùng số dư khi chia cho 3, số nào 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 <= 10^5
1 <= A[i] <= 10^9
Ví dụ:
Input:
5
10 2 5 6 1
Output:
6 1 10 2 5
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.
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