Số k tốt (set)

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

Point: 1

Hãy gọi một số là số k tốt nếu số đó chứa tất cả các chữ số không vượt quá chính nó k (0,...,k). Tý có một số k và một mảng A chứa n số. Tìm giúp Tý xem có bao nhiêu số đẹp k tốt trong A (đếm từng số mỗi khi nó xuất hiện trong mảng A).


Định dạng đầu vào: Dòng đầu tiên chứa n và k tương ướng với đề bài; n dòng tiếp theo mỗi dòng chứa một số ai là phần tử thứ i của mảng A (1 <= i <= n)


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


Định dạng đầu ra: In ra số lượng số k tốt trong dãy a


Input 01:
2 1
1
10
Output 01:
1

Giải thích: Trong 2 số 1 và 10 chỉ có số 10 là có đầy đủ 2 chữ số từ 0 đến 1 (k = 1)

Input 02:
2 4
12340
123
Output 02:
1

Phần tử riêng biệt (set)

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

Point: 1

Cho dãy số A[] gồm có N phần tử, bạn hãy liệt kê các giá trị xuất hiện trong dãy theo thứ tự xuất hiện, mỗi giá trị chỉ liệt kê một lần.


Định dạng đầu vào: Dòng đầu tiên là số nguyên N. Dòng thứ 2 là N số nguyên A[i]


Ràng buộc: 1≤ N ≤ 10^5; 0 ≤ A[i] ≤ 10^9;


Định dạng đầu ra: In ra các giá trị xuất hiện trong máng theo thứ tự xuất hiện.


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

Lớn nhất, nhỏ nhất (set)

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

Point: 1

Cho mảng A[] gồm n phần tử, có 3 loại thao tác:

• Thao tác 1: Thêm phần tử X vào mảng

• Thao tác 2: Xóa mọi giá trị X khỏi mảng nếu X tồn tại trong mảng

• Thao tác 3: Tìm phần tử nhỏ nhất trong mảng

• Thao tác 4: Tìm phần tử lớn nhất trong mảng

Đối với thao tác 3 và 4 bạn hãy in ra phần tử lớn nhất, nhỏ nhất trong mảng A[]


Định dạng đầu vào:

• Dòng 1 nhập N là số lượng phần tử ban đầu trong mảng A[]

• Dòng thứ 2 nhập N phần tử ban đầu của mảng A[]

• Dòng 3 nhập số lượng thao tác Q

• Q dòng tiếp theo mỗi dòng mô tả 1 thao tác, trong đó nếu là thao tác 1 và 2 thì có thêm phần tử X.


Ràng buộc:

1<=N<=10^5

1<=Q<=10000

0<=A[i], X<=10^6


Input:
10
24 31 49 65 57 77 7 81 77 79
10
2 60
2 7
3
3
2 45
1 16
4
3
1 6
1 8
Output:
24
24
81
16

Tổng bằng 1 giá trị cho trước (unorder_set)

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

Point: 1

Viết chương trình tìm tất cả các cặp phần tử trong danh sách có tổng bằng một giá trị cho trước. Không tính các cặp trùng nhau.


Định dạng đầu vào: Nhập vào 1 danh sách các số nguyên và một số nguyên k


Định dạng đầu ra: In ra tổng tất cả các cặp phần tử có tổng bằng k và các cặp thỏa mãn (phần tử nhỏ hơn in trước, lớn hơn in sau)


Input 01:
1 2 3 4
4
Output 01:
1
(1, 3)
Input 02:
1 2 7 8
9
Output 02:
2
(1, 8)
(2, 7)
Input 03:
2 3 5 8 11
2
Output 03:
0
NONE

Xóa phần tử trong tập hợp (set)

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

Point: 1

Viết chương trình để xóa một hoặc nhiều phần tử khỏi một tập hợp nhất định.


Định dạng đầu vào: Nhập vào 1 tập hợp và phần tử cần xóa


Định dạng đầu ra: In ra tập hợp sau khi xóa


Input 01:
1 2 3 4
1
Output 01:
2 3 4
Input 02:
1 2 7 8
10
Output 02:
1 2 7 8

Thuộc mảng thứ nhất không thuộc mảng thứ 2 (set)

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

Point: 1

Cho 2 mảng số nguyên, hãy liệt kê những phần từ thuộc mảng thứ nhất mà không thuộc mảng thứ 2.


Định dạng đầu vào:

Dòng dầu tiên là số lượng test case T. (I≤T≤100).

Môi test case gồm 3 dòng, dòng đâu tiên là số lượng phần tử của mảng thứ nhất và mảng thứ hai. (i ≤ n, m ≤ 1000)

Dòng thứ 2 là các số thuộc mảng thứ nhất. (-10^9<=ai<=10^9)

Dòng thứ 3 là các số thuộc mảng thứ hai. (-10^9<=ai<=10^9)


Định dạng đầu ra: Liệt kê các số thuộc mảng thứ nhất mà không thuộc mảng thứ hai theo thứ tự xuất hiện, nếu không tồn tại số nào in ra "NOT FOUND".


Input 01:
1
4 5
1 2 2 9
2 0 9 8 3
Output 01:
1
Input 02:
1
4 5
10 13 13 11
10 11 11 12 13
Output 02:
NOT FOUND

Xóa phần tử nhỏ nhất (multiset)

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

Point: 1

Cho một dãy số gồm n phần tử.

Hãy liên tục xóa phần tử nhỏ nhất ra khỏi dãy cho đến khi dãy rỗng.

Sau mỗi lần xóa, in ra phần tử bị xóa.


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

Tìm phần tử lớn nhất nhỏ hơn hoặc bằng X (multiset)

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

Point: 1

Cho một multiset và số nguyên x.

Tìm phần tử lớn nhất trong multiset nhỏ hơn hoặc bằng x.

Nếu không có phần tử nào thỏa mãn, in -1.


Input:
5 6
1 3 8 10 12
Output:
3

Liệt kê các phần tử kèm theo tần suất (map)

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

Point: 1

Nhập vào một mảng A gồm các số nguyên có N phần tử, in ra các phần tử theo thứ tự xuất hiện trong mảng a kèm theo tần suất của nó, mỗi giá trị chỉ in 1 lần.


Ràng buộc: ~0 < N \leq 10^6~; ~-10^6 \leq A[i] \leq 10^6~


Dữ liệu vào gồm 2 dòng, dòng thứ nhất là số lượng N phần tử, dòng thứ 2 lần lượt là N phần tử trong mảng A.


Input 01:
10
5 1 4 1 3 2 1 2 3 10
Output 01:
5 1
1 3
4 1
3 2
2 2
10 1

Số 5 xuất hiện 1 lần, số 1 xuất hiện 3 lần, số 4 xuất hiện 1 lần...

Input 02:
11
5 -1 4 -1 3 2 1 2 3 10 10
Output 02:
5 1
-1 2
1 1
4 1
3 2
2 2
10 2

Dãy con liên tiếp dài nhất có tổng chia hết cho K

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

Point: 1

Cho mảng A có N phần tử và số nguyên dương K, hãy tìm dãy con liên tiếp dài nhất có tổng các phần tử chia kết cho K. In ra số lượng phần tử của dãy con liên tiếp dài nhất nếu tồn tại hoặc in ra -1 nếu không có dãy con nào chia hết cho K


Ràng buộc: ~1 \leq K \leq N \leq 10^6~; ~-10^6 \leq A[i] \leq 10^6~


Input:
12 2
-4 1 4 -1 4 4 -3 4 2 -4 2 4
Output:
10

Xâu Pangram 1 (xâu ký tự - chuỗi ký tự - map)

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

Point: 1

Xâu Pangram là xâu có chứa đầy đủ các kí tự từ A tới Z không phân biệt chữ hoa hay thường. Nhập vào xâu S và kiểm tra xem xâu S có phải là xâu pangram hay không?


Ràng buộc: ~1≤len(S)≤100000~;


In ra YES nếu S là xâu pangram, ngược lại in NO.


Input:
abcdefghijklmnopqrstuvwxyz
Output:
YES

Từ xuất hiện nhiều nhất, ít nhất trong xâu (map - xâu ký tự - chuỗi ký tự)

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

Point: 1

Cho một xâu kí tự S bao gồm các chữ cái và dấu cách, một từ được định nghĩa là các kí tự liên tiếp không chứa dấu cách. Hãy tỉm từ có số lần xuất hiện nhiều nhất và ít nhất trơng xâu, nếu có nhiều từ có cùng số lần xuất hiện nhiều nhất hoặc ít nhất thì chọn từ có thứ tự từ điển lớn nhất làm kết quả


Ràng buộc: ~1 \leq len(s) \leq 100000~


Dòng đầu tiên in ra từ có số lẫn xuất hiện nhiều nhất. Dòng thứ 2 in ra từ có số lần xuất hiện ít nhất


Input:
aa bb cc aa bb aa aa cc
output:
aa 4
cc 2

Từ đầu tiên lặp lại (map)

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

Point: 1

Tìm từ được lặp lại đầu tiên trong câu.


Định dạng đầu vào: Dòng đầu tiên là số lượng bộ test (1≤T≤100).

T dòng tiếp theo mỗi dòng chứa một chuỗi đầu vào.


Định dạng đầu ra: Từ đầu tiên được lặp lại, dữ liệu đảm bảo câu có 2 từ trở lên vào có xuất hiện từ được lặp lại.


Input:
2
abc abc abc zzz ZZZ cd 
ngon ngu lap lap ngu ngon
Output:
abc
lap

Đặt tên người dùng (map)

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

Point: 1

Xây dựng chương trình đặt tên tài khoản người dùng. Nếu tên người dùng muốn đặt đã xuất hiện trong hệ thống thì sẽ đặt tên tài khoản theo cú pháp "tên người dùng muốn đặt" + số tài khoản cùng tên trong hệ thống cộng thêm 1. Vi dụ: Giả sử trong hệ thống đã tồn tại tên người dùng là ty thì người dùng tiếp theo muốn sử dụng tên tài khoản là ty sẽ được lưu ở hệ thống với tên ty1, tương tự như vậy trong trường hợp có 2 tài khoản tên ty trong hệ thống thì người dùng có tên ty sẽ được lưu với tên ty2


Định dạng đầu vào: Dòng đầu tiên là n số lượng tên người dùng muốn cài đặt vào hệ thống, n dòng tiếp theo sẽ là tên người dùng, tên người dùng chi bao gồm 1 từ duy nhất


Định dạng đầu ra: In kết quả là tên người dùng được lưu trong hệ thống.


Input:
14
an
binh
an
binh
long
huong
ngoc
thuan
nhung
nhung
ngoc thuan
nhung
nhung
nhung
Output:
an 
binh 
an1 
binh1 
long 
huong 
ngoc
thuan
nhung
nhung1
ngoc thuan 
nhung2
nhung3
nhung4

Thi đấu (map)

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

Point: 1

Cho thông tin các trận đấu của giải bóng đá Học Công Nghệ, nhiệm vụ của bạn là đối với mỗi đội bóng hãy liệt kê các đối thủ đã từng chạm trán. Danh sách các đội bóng được liệt kê theo thứ tự từ điển tăng dần và danh sách đối thủ của từng đội bóng cũng được liệt kê tăng dần theo thứ tự từ điền.

Gợi ý : Dùng map(string, vector(string)) mp; mỗi đội bóng sẽ dùng 1 vector để lưu lại danh sách các đối thủ trong các trận bóng, sort danh sách đội bóng trước khi in ra kết quả.


Định dạng đầu vào:

Dòng 1 là N: số trận bóng diễn ra

N dòng tiếp theo mỗi dòng gồm thông tin của 1 trận đấu theo cú pháp X - Y, trong đó đội X thi đấu với đội Y


Ràng buộc: 1<=N<=1000


Định dạng đầu ra: In ra kết quả của bài toán theo mẫu


Input:
13
Arsenal - Lyon
Fullham - Liverpool
Fullham - Chelsea
Barcelona - Chelsea
Barcelona - Fullham
Lyon - Barcelona
Chelsea - AC Milan
PSG - Manchester City
Arsenal - Fullham
Fultham - Arsenal
Real Madrid - Barcelona
Arsenal - Manchester City
Manchester United - Liverpool
Output:
AC Milan : Chelsea
Arsenal : Fullham, Fultham, Lyon, Manchester City
Barcelona : Chelsea, Fullham, Lyon, Real Madrid
Chelsea : AC Milan, Barcelona, Fullham
Fullham : Arsenal, Barcelona, Chelsea, Liverpool
Fultham : Arsenal
Liverpool : Fullham, Manchester United
Lyon : Arsenal, Barcelona
Manchester City : Arsenal, PSG
Manchester United : Liverpool
PSG : Manchester City
Real Madrid : Barcelona

Minimum subarray

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

Point: 1

Cho mảng A gồm N phân tử và số nguyên K, nhiệm vụ của bạn là tìm mảng con liên tiếp ngắn nhất có tổng các phần tử bằng K. Ví dụ với mảng A[] = {1, 1, 3, 1, 2, 4, 1, 1, 2} và K = 6 thì mảng con ngắn nhất có tổng bằng 6 là 2.


Định dạng đầu vào: Dòng thứ nhất gồm N và K; Dòng thứ 2 gồm các phần tử trong mảng A[]


Ràng buộc: 1<=K<=N<=10^6; -10^6<=A[i]<=10^6;


Định dạng đầu vào: In ra độ dài của mảng con ngắn nhất đó hoặc in ra -1 nếu không tồn tại mảng con có tổng bằng K


Input 01:
6 10
1 2 3 4 5 6
Output 01:
4
Input 02:
6 7
1 2 3 4 5 6
Output 02:
2