Sắp xếp 1 - Hưng
Sắp xếp chèn (insertion sort)
Nộp bàiPoint: 1
Nhập vào một mảng A gồm N số nguyên. In ra các bước của thuật toán sắp xếp chèn.
Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~
Input:
4
5 7 3 2
Output:
Buoc 0: 5
Buoc 1: 5 7
Buoc 2: 3 5 7
Buoc 3: 2 3 5 7
Sắp xếp chọn (selection sort)
Nộp bàiPoint: 1
Nhập vào một mảng A gồm N số nguyên. In ra các bước của thuật toán sắp xếp chọn.
Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~
Input:
4
5 7 3 2
Output:
Buoc 1: 2 7 3 5
Buoc 2: 2 3 7 5
Buoc 3: 2 3 5 7
Sắp xếp đổi chỗ trực tiếp
Nộp bàiPoint: 1
Nhập vào một mảng A gồm N số nguyên. In ra các bước của thuật toán sắp xếp đổi chỗ trực tiếp để sắp xếp mảng theo thứ tự tăng dần.
Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 \leq A[i] \leq 10^6~
Input:
4
5 7 3 2
Output:
Buoc 1: 2 7 5 3
Buoc 2: 2 3 7 5
Buoc 3: 2 3 5 7
Sắp xếp giảm dần
Nộp bàiPoint: 1
Giáo viên yêu cầu học sinh xếp hàng theo chiều cao từ cao xuống thấp. Cho một mảng gồm N số nguyên biểu thị chiều cao của các bạn. Hãy sắp xếp mảng này theo thứ tự giảm dần.
Đầu vào:
Dòng đầu tiên chứa số nguyên dương N.
Dòng thứ hai chứa N số nguyên dương.
Đầu ra:
In ra dãy số sau khi sắp xếp giảm dần.
Ràng buộc:
1 <= N <= 1000
1 <= A[i] <= 200
Ví dụ 1:
Input:
5
150 160 155 170 165
Output:
170 165 160 155 150
Ví dụ 2:
Input:
3
10 10 20
Output:
20 10 10
Số nhỏ thứ k
Nộp bàiPoint: 1
Cho một dãy số gồm N số nguyên và một số nguyên dương K. Hãy tìm số nhỏ thứ K trong dãy số đó. Gợi ý: Sắp xếp dãy số tăng dần, sau đó lấy phần tử ở vị trí thứ K (nếu bắt đầu đếm từ 1).
Đầu vào:
Dòng đầu tiên chứa hai số nguyên N và K.
Dòng thứ hai chứa N số nguyên.
Đầu ra:
In ra giá trị của số nhỏ thứ K.
Ràng buộc:
1 <= K <= N <= 1000
-10^6 <= A[i] <= 10^6
Ví dụ 1:
Input:
5 2
9 1 3 5 2
Output:
2
Ví dụ 2:
Input:
6 3
10 20 10 30 5 15
Output: 10
Sắp xếp chẵn lẻ
Nộp bàiPoint: 1
Cho một dãy số nguyên dương. Hãy sắp xếp dãy số sao cho các số chẵn được xếp trước theo thứ tự tăng dần, sau đó đến các số lẻ cũng được xếp theo thứ tự tăng dần.
Đầu vào:
Dòng đầu tiên chứa số nguyên dương N.
Dòng thứ hai chứa N số nguyên.
Đầu ra:
Dãy số thỏa mãn yêu cầu đề bài.
Ràng buộc:
1 <= N <= 1000
1 <= A[i] <= 10^5
Ví dụ 1:
Input:
6
1 2 3 4 5 6
Output:
2 4 6 1 3 5
Ví dụ 2:
Input:
5
9 7 2 8 5
Output:
2 8 5 7 9
Top 3 điểm cao nhất
Nộp bàiPoint: 1
Trong một kỳ thi, có N thí sinh tham gia. Hãy in ra điểm số của 3 thí sinh cao điểm nhất theo thứ tự từ cao xuống thấp. Nếu N < 3 thì in ra tất cả điểm số giảm dần.
Đầu vào:
Dòng đầu tiên chứa số nguyên N.
Dòng thứ hai chứa N điểm số (số thực).
Đầu ra:
Các điểm số cao nhất (tối đa 3 số), làm tròn đến 2 chữ số thập phân.
Ràng buộc:
1 <= N <= 1000
0.00 <= Điểm <= 10.00
Ví dụ 1:
Input:
5
8.5 9.0 7.2 10.0 6.5
Output:
10.00 9.00 8.50
Ví dụ 2:
Input:
2
5.5 6.5
Output:
6.50 5.50
Sắp xếp ký tự
Nộp bàiPoint: 1
Cho một chuỗi ký tự S chỉ gồm các chữ cái in thường từ 'a' đến 'z'. Hãy sắp xếp các ký tự trong chuỗi S theo thứ tự bảng chữ cái (từ a đến z).
Đầu vào:
Một dòng duy nhất chứa chuỗi S.
Đầu ra:
Chuỗi S sau khi đã sắp xếp.
Ràng buộc:
Độ dài chuỗi S <= 1000.
Ví dụ 1:
Input:
monhoc
Output:
chmnoo
Ví dụ 2:
Input:
bubble
Output:
bbbelu
Trung vị của dãy số
Nộp bàiPoint: 1
Số trung vị của một dãy số là số nằm ở chính giữa dãy số đó sau khi đã được sắp xếp tăng dần. Cho N là một số lẻ, hãy tìm số trung vị của dãy số.
Đầu vào:
Dòng 1: Số nguyên dương lẻ N.
Dòng 2: N số nguyên.
Đầu ra:
Số trung vị tìm được.
Ràng buộc:
1 <= N <= 999 (N luôn là số lẻ)
0 <= A[i] <= 10^9
Ví dụ 1:
Input:
5
10 2 8 4 6
Output:
6
(Giải thích: Dãy sắp xếp là 2 4 6 8 10, số ở giữa là 6)
Ví dụ 2:
Input:
3
100 1 50
Output:
50
Số xuất hiện nhiều nhất trong mảng (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ử. In ra số xuất hiện nhiều nhất trong mảng và số lần xuất hiện. Nếu có nhiều số xuất hiện bằng nhau thì in ra số nhỏ hơn.
Ràng buộc: ~1 \leq N \leq 2.10^5~; ~-10^9 \leq A[i] \leq 10^9~
input:
5
1 2 2 1 3
Output:
1 2
Sắp xếp dãy số thực
Nộp bàiPoint: 1
Xây dựng chương trình nhập vào một mảng các số thực (kiểu double) D gồm N phần tử, sau đó sắp xếp mảng đó theo thứ tự giảm dần.
Ràng buộc ~0 < N \leq 10^6~, ~-10^6 \leq D[i] \leq 10^6~
Input:
5
1.3 0.8 7.2 6.7 2.5
Output:
7.2 6.7 2.5 1.3 0.8
Đếm số khác nhau trong mảng (sắp xếp - tìm kiếm)
Nộp bàiPoint: 1
Cho một mảng các số nguyên gồm N phần tử. Đếm số lượng các số khác nhau trong mảng
Ràng buộc: ~1 \leq N \leq 2.10^5~; ~1 \leq A[i] \leq 10^9~
input:
10
1 2 2 1 3 4 3 5 6 7
Output:
7
Khoảng cách nhỏ nhất (sắp xếp)
Nộp bàiPoint: 1
Cho một mảng các số nguyên gồm N phần tử. Tìm khoảng cách (độ chênh lệch) nhỏ nhất của 2 phần tử bất kỳ trong mảng.
Ràng buộc: ~1 \leq N \leq 2.10^5~; ~1 \leq A[i] \leq 10^9~
input:
5
1 2 7 5 6
Output:
1
Biểu thức lớn nhất
Nộp bàiPoint: 1
Một dãy gồm n số nguyên không âm a1, a2,...., an được viết thành một hàng ngang, giữa hai số liên tiếp có một khoảng trắng, như vậy có tất cả (n-1) khoảng trắng. Người ta muốn đặt k dấu cộng và (n-1-k) dấu trừ vào (n-1) khoảng trằng đó để nhận được một biểu thức có giá trị lớn nhất. Ví dụ, với dãy gồm 5 số nguyên 28, 9, 5, 1, 69 và k = 2 thì cách đặt 28+9-5-1 +69 là biểu thức có giá trị lớn nhất. Yêu cầu: Cho dãy gồm n số nguyên không âm a1, a2..., an và số nguyên dương k, hãy tìm cách đặt k dấu cộng và (n-1-k) dấu trừ vào (n-1) khoảng trắng để nhận được một biểu thức có giá trị lớn nhất.
Đầu vào: Dòng đầu chứa hai số nguyên dương n, k; Dòng thứ hai chứa n số nguyên không âm a1, a2,..., an;
Ràng buộc: 1 <= k < n ≤ 10^5; 0 <= a[i] ≤ 10^6
In ra giá trị lớn nhất của biểu thức
Input:
5 3
10 1 3 9 8
Output:
29
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