Sử dụng hàm sort trong c++
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ụ:
Input:
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
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
Số trong chuỗi
Nộp bàiPoint: 1
Cho N số nguyên được nhập dưới dạng chuỗi (do số rất lớn, không lưu vừa kiểu int hay long long). Hãy sắp xếp các số này theo thứ tự tăng dần.
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N chuỗi số.
Dữ liệu ra:
Các chuỗi số đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
Độ dài mỗi chuỗi số <= 100
Ví dụ:
Input:
3
10 2 100
Output:
2 10 100
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
Đếm nguyên âm (cmp)
Nộp bàiPoint: 1
Cho N chuỗi ký tự tiếng Anh (chỉ gồm chữ cái thường). Sắp xếp các chuỗi theo số lượng nguyên âm (u, e, o, a, i) tăng dần. Nếu số lượng nguyên âm bằng nhau, xếp theo thứ tự từ điển.
Dữ liệu vào:
Dòng 1: N.
Dòng 2: N chuỗi.
Dữ liệu ra:
Các chuỗi đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
Ví dụ:
Input:
3
banana apple sky
Output:
sky apple banana
Giải thích: sky(0), apple(2), banana(3).
Phân số (cmp)
Nộp bàiPoint: 1
Cho N phân số, mỗi phân số gồm Tử số và Mẫu số. Hãy sắp xếp các phân số theo giá trị tăng dần. (Lưu ý: Không nên dùng phép chia số thực để tránh sai số, hãy dùng nhân chéo).
Dữ liệu vào:
Dòng 1: N.
N dòng tiếp theo: Mỗi dòng chứa 2 số nguyên a (tử) và b (mẫu).
Dữ liệu ra:
Danh sách phân số a/b đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
1 <= a, b <= 1000
Ví dụ:
Input:
2
1 2
1 3
Output:
1/3 1/2
Danh sách học sinh (cmp)
Nộp bàiPoint: 1
Mỗi học sinh có Tên (chuỗi, không dấu cách) và Điểm (số nguyên). Sắp xếp danh sách học sinh theo Điểm giảm dần. Nếu Điểm bằng nhau, sắp xếp theo Tên tăng dần (từ điển).
Dữ liệu vào:
Dòng 1: N.
N dòng tiếp theo: Mỗi dòng gồm Tên và Điểm.
Dữ liệu ra:
Danh sách đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
Ví dụ:
Input:
3
Nam 8
Tuan 9
Binh 8
Output:
Tuan 9
Binh 8
Nam 8
Mốc thời gian (cmp)
Nộp bàiPoint: 1
Cho N mốc thời gian, mỗi mốc gồm Giờ, Phút, Giây. Hãy sắp xếp các mốc thời gian này theo thứ tự tăng dần.
Dữ liệu vào:
Dòng 1: N.
N dòng tiếp theo: Mỗi dòng gồm 3 số nguyên h, m, s.
Dữ liệu ra:
Danh sách thời gian đã sắp xếp.
Ràng buộc:
1 <= N <= 1000
0 <= h < 24, 0 <= m, s < 60
Ví dụ:
Input:
2
12 30 15
12 30 10
Output:
12 30 10
12 30 15
In các phần tử có trong cả 2 mảng
Nộp bàiPoint: 1
Cho mảng A có N phần tử và mảng B có M phần tử, hãy in ra các phần tử có trong cả mảng A và mảng B, nếu trùng nhau chỉ in 1 lần. Nếu không có phần tử nào trùng lặp thì in ra NONE
Ràng buộc: ~0 < N, M \leq 10^6~, ~-10^6 < A[i], B[i] \leq 10^6~
Input 01:
3 4
1 2 3
3 4 5 6
Output 01:
3
Input 02:
6 4
1 2 3 4 5 6
3 4 5 6
Output 02:
3 4 5 6
Input 03:
3 4
1 2 2
3 4 5 6
Output 03:
NONE
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 tên lớp
Nộp bàiPoint: 1
Xây dựng chương trình nhập vào danh sách lớp gồm N lớp trong trường, sau đó sắp xếp danh sách lớp đó theo thứ tự tăng dần, ví dụ: 7A1, 6A2, 8A3, 6A4 thì sau khi sắp xếp sẽ là 6A2, 6A4, 7A1, 8A3
Ràng buộc: ~0 < N \leq 10^6~
Input:
4
7A1 6A2 8A3 6A4
Output:
6A2 6A4 7A1 8A3