Sắp xếp tên lớp

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

Sắp xếp mảng ký tự

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 gồm N xâu ký tự, sau đó sắp xếp các xâu ký tự đó theo thứ thự giảm dần (theo bảng chữ cái A, B, C)


Ràng buộc: ~0 < N \leq 10^6~


Input 01:
4
abc abd cad bcd
Output 01:
cad bcd abd abc
Input 02:
6
hoc cong nghe that tuyet voi
Output 02:
voi tuyet that nghe hoc cong

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

Sắp xếp giảm dần

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

Point: 1

Cho mảng gồm n số nguyên. Hãy sắp xếp các phần tử theo thứ tự giảm dần và in ra kết quả.

Input:

Dòng 1: số nguyên n (1 ≤ n ≤ 1000).

Dòng 2: n số nguyên.

Output:

Một dòng gồm n số nguyên đã được sắp xếp giảm dần.

Ví dụ:

Input:
4
9 2 7 5
Output:
9 7 5 2

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

Sắp xếp các xâu theo độ dài

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

Point: 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 tổng chữ số (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ử. 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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 Ngược (cmp)

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

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

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

Chữ số tận cùng (cmp)

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

Point: 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 số lượng các ước số (cmp)

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

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


Xếp gạch

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

Point: 1

Nam có n viên gạch được đánh số từ 1 đến n. Các viên gạch có độ cứng lần lượt là a1, a2,..., an. Một viên gạch có độ cứng x nghĩa là Nam có thể chồng lên trên viên gạch đó tối đa x viên gạch khác, nếu chồng nhiều hơn thì viên gạch đó bị vỡ. Hỏi Nam có thể sắp được chồng gạch cao nhất là bao nhiêu?


Đầu vào:

Dòng đầu tiên là số nguyên n - là số viên gạch.

Dòng tiếp theo gồm n số nguyên a1, a2,.... an mỗi số cách nhau một khoảng trắng.


Ràng buộc: 1<=n<=10^5; 0 <= ai <= 10^6


Input:
4
1 2 3 4
Output:
4

Vắt sữa bò

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

Point: 1

Vào một buổi sáng anh Bo sắp xếp một đàn bò gồm n con bò để vắt sữa. Anh dự kiến là vào sáng hôm đó, con bò thứ có khả năng sẽ vắt được ai lít sữa. Tuy nhiên đàn bò của anh có đặc tính là cứ mỗi lần vắt sữa một con, những con còn lại trông thấy sợ quá nên sẽ bị giảm sản lượng mỗi con 1 lít sữa. Nếu vắt sữa con bò thứ nhất, n-1 con còn lại bị giảm sản lượng. Sau đó vắt sữa con bò thứ hai thì n-2 con còn lại bị giảm sản lượng... Bạn hãy giúp anh Bo tính xem thứ tự vắt sữa bò như thế nào để số lượng sữa vắt được là nhiều nhất nhé.


Đầu vào:

Dòng thứ nhất là số nguyên là số lượng con bò.

Dòng thứ hai gồm n số nguyên a1, a2...., an là sản lượng sữa của các con bò.


Ràng buộc: 1<=n<=10^5; 1<=a[i]<=10^6


Số nguyên xác định số lít sữa nhiều nhất mà anh Bo có thể vắt được.


Input
4
4 4 4 4
Output:
10

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

Phân tích nhóm (sắp xếp - tìm kiếm) ICPC

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

Point: 1

Phân tích nhóm (phân nhóm, chia nhóm) là công việc phân chia các phần tử trong một tập hợp thành một hoặc nhiều nhóm mà trong đó các phần tử trong cùng một nhóm sẽ giống nhau hơn so với phần tử thuộc nhóm khác. Cho một tập N số nguyên dương và một sổ nguyên dương K, nhiệm vụ của bạn là đếm xem có bao nhiêu nhóm. Biết rắng 2 phần tử được xếp chung nhóm với nhau nếu như chênh lệch giữa chúng không vượt quá K.

Ví dụ: với tập N = 7 số nguyên dương: 2, 6, 1, 7, 3, 4, 9 và K = 1 thì ta sẽ có các mối quan hệ sau: 2 và 1 chung một nhóm (chênh lệch giữa chúng là 1, không vượt quá K) 2 và 3 chung một nhóm 6 và 7 chung một nhóm 3 và 4 chung một nhóm Vậy ta sẽ có 3 nhóm: {1, 2, 3, 4}, {6, 7} và (9}


Đầu vào:

Dòng đầu chứa 2 số nguyên dương N, K;

Dòng thứ hai chứa N số nguyên dương - các phần tử của tập hợp


Ràng buộc: 1<=N<=10^5; 1<=K<=10^6; Các phần tử trong tập hợp là số nguyên có trị tuyệt đối không vượt quá 10^6


Đầu ra: Kết quả của bài toán

Input:
7 1
2 6 1 7 3 4 9
Output:
3

Khiêu vũ (kỹ thuật sắp xếp - tìm kiếm)

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

Point: 1

Đại học Bang Berland đang tổ chức một buổi khiêu vũ trong lễ kỷ niệm 100500 năm thành lập! n các chàng trai và m cô gái đã bận rộn luyện tập các động tác nhảy múa. Cho biết rằng một số cặp nam và nữ sẽ được mời tham dự vũ hội. Tuy nhiên, kỹ năng khiêu vũ của các đối tác trong mỗi cặp khác nhau nhiều nhất là một đơn vị. Đối với mỗi chàng trai, chúng tôi biết kỹ năng nhảy của cậu ấy. Tương tự, đối với mỗi cô gái, chúng tôi biết kỹ năng khiêu vũ của cô ấy. Viết mã xác định số cặp lớn nhất có thế được hình thành từ n trai và m gái.


Định dạng đầu vào: Dòng đầu tiên chứa số nguyên n và m (1 <= n, m ≤ 10^5) - số chàng trai và số cô gái.

Dòng thứ hai chứa dãy a1, a2, ... , an (1 ≤ ai ≤ 10^5), trong đó ai là kỹ năng nhảy của chàng trai thứ i.

Dòng thứ ba chứa dãy b1, b2, ..., bm (1 ≤ bj ≤ 10^5), trong đó bj là kỹ năng nhảy của cô gái thứ j.


Ràng buộc: 1 <= n, m <= 10^5; 0 ≤ ai ≤ 10^5; 0 ≤ bj ≤ 10^5


Định dạng đầu ra: In một số duy nhất - số cặp tối đa được yêu cầu.


Input:
2 3
1 2
2 3 4
Output:
2