Sắp xếp chèn (insertion sort)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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