Mảng con tổng bằng 0 (kỹ thuật 2 con trỏ)

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

Point: 1

Cho mảng A[] gồm N phần tử, nhiệm vụ của bạn là kiểm tra xem có tồn tại mảng con có tổng bằng 0 hay không, nếu tồn tại mảng con như vậy bạn in ra 1. Nếu không tồn tại dãy con có tổng bằng 0 thì in ra -1.


Định dạng đầu vào: Dòng thứ nhất gồm N; 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 ra: In ra đáp án của bài toán.


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

Maximum distance (map)

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 dương K, nhiệm vụ của bạn là tìm khoảng cách lớn nhất giữa 2 chỉ số i, j sao cho trị tuyệt đối của hiệu A[i] - A[j] bằng K.


Đị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 ra: In ra khoảng cách lớn nhất giữa i và j hoặc in ra - 1 nếu không tồn tại cặp số như vậy.


Input 01:
14 2
0 1 3 0 4 0 0 3 3 -4 1 0 -4 3
Output 01:
12
Input 02:
7 10
5 1 2 -5 8 2 12
Output 02:
4

Seg Count 3 (kỹ thuật 2 con trỏ - map)

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

Point: 1

Cho mảng A[] gồm N số nguyên và số nguyên K, nhiệm vụ của bạn là đếm xem có bao nhiêu mảng con các phần tử liên tiếp trong mảng mà số lượng phần từ khác nhau trong mảng con này không vượt quá K.


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

• Dòng đầu tiền là N và K

• Dòng thứ 2 là N số trong máng A[]


Ràng buộc:

• 1<=K<=N<=10^5

• 1<=A[i]<=10^6


Định dạng đầu ra: In ra số lượng mảng con thỏa mãn đề bài


Input:
11 3
5 4 4 5 4 4 2 1 5 2 4
Output:
42

Liệt kê và đếm (map)

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

Point: 1

Cho một dãy các số nguyên dương không quá 9 chữ số, mỗi số cách nhau vài khoảng trống, có thể xuống dòng. Hãy tìm các số không giảm (các chữ số theo thứ tự từ trái qua phải tạo thành dãy không giảm) và đếm số lần xuất hiện của các số đó.


Định dạng đầu vào: Gồm 1 dãy các số nguyên dương không quá 9 chữ số


Ràng buộc: Dãy không có quá 100000 số. Các số đều nguyên dương và không quá 9 chữ số.


Định dạng đầu ra: Ghi ra các số không giảm kèm theo số lần xuất hiện. Các số được liệt kê theo thứ tự sắp xếp số lần xuất hiện giảm dần. Trong trường hợp có nhiều số có cùng số lần xuất hiện thì thì số nhỏ hơn sẽ xếp trước.


Input:
888 289 123
321 54 888
Output:
888 2
123 1
289 1

Điểm trung bình (map)

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

Point: 1

Cho thông tin điểm thi của các môn học của các sinh viên, bạn hãy tính điểm trung bình của sinh viên đó và in ra màn hình. Điểm trung bình được tính bằng cách lấy tổng hệ số điểm và số tín chỉ chia cho tổng số tín chỉ. Ví dụ sinh viên X học môn A có 2 tín chỉ và có điểm là 5, môn B có 3 tín chỉ và có điểm là 4 thì điểm trung bình được tính = (2 * 5 + 3 * 4) / (2 + 3).


Định dạng đầu vào: Gồm nhiều dòng, mỗi dòng gồm 3 thông tin: Tên sinh viên (có 1 từ), số tín chỉ và điểm số tương ứng. Dữ liệu đảm bảo không có 2 sinh viên có cùng tên.


Ràng buộc: Điểm là số nguyên từ 0 tới 10, số tín chỉ là số nguyên dương


Định dạng đầu ra: In ra danh sách sinh viên theo thứ tự từ điển giảm dần và điểm trung bình lấy 2 số sau dấu phẩy.


Input 01:
linh 3 7
tuan 4 5
huyen 3 5
linh 4 9
tuan 5 4
huyen 3 6
Output 01:
tuan : 4.44
linh : 8.14
huyen : 5.50
Input 02:
Lan 4 8
Hanh 4 5
Lan 6 10
Phong 4 10
Nam 4 9
Phong 6 5
Lan 2 4
Phuong 6 1
Nhung 2 7
Nhung 6 9
Nhung 5 8
Nhung 4 10
Lan 3 1
Output 02:
Phuong : 1.00
Phong : 7.00
Nhung : 8.71
Nam: 9.00
Lan : 6.87
Hanh : 5.00

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

Tìm kiếm sinh viên (map)

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

Point: 1

Ở trường đại học xyz, mỗi sinh viên sẽ có một mã sinh viên riêng. Mã sinh viên là một xâu kí tự không quá 8 kí tự. Bạn được yêu cầu xây dựng chương trình có thể kiểm tra một mã sinh viên nào đó có thuộc về sinh viên nào?


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

Dòng đầu tiên là số lượng sinh viên N.

N dòng tiếp theo là các dòng tiếp theo mô tả thông tin của sinh viên trên 2 dòng, dòng đầu là mã sinh viên, dòng 2 là tên sinh viên.

Dòng tiếp theo là số truy vấn Q.

Q dòng tiếp theo, mỗi dòng là một mã sinh viên cần tìm kiếm, nếu mã sinh viên này thuộc về một bạn sinh viên thì in ra tên của sinh viên đó trên 1 dòng, ngược lại in ra "NOT FOUND" trên 1 dòng.


Ràng buộc:

1≤ N ≤ 10^4; 1≤ Q ≤ 1000

Mã sinh viên là xâu kí tự không quá 8 kí tự

Tên sinh viên là một xâu có không quá 30 kí tự


Định dạng đầu ra: In ra kết quả của từng truy vấn, mỗi truy vẫn trên 1 dòng.


Input:
3
001
le hoang minh
002
le tuan manh
003
nguye phi hung
2
002
004
Output:
le tuan manh
NOT FOUND

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

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

Đếm số lượng từ khác nhau trong xâu - phiên bản nhập xâu trên một dòng (map)

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

Point: 1

Cho một xâu gồm nhiều từ, đếm số lượng từ khác nhau trong xâu (lưu ý các từ không phân biệt chữ hoa và chữ thường, không cho biết trước số lượng từ trong xâu, không sử dụng mảng string)


Ràng buộc: Số lượng từ có thể lên đến 1000 từ


Input:
hoc cong nghe day hoc cong nghe va lap trinh
Output:
7

Ký tự xuất hiện nhiều nhất (map)

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

Point: 1

Tìm kí tự xuất hiện nhiều nhất trong chuỗi. (làm bằng 2 cách: Sử dụng mảng đếm hoặc sử dụng map)


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

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

Mỗi test case gồm một dòng là 1 chuỗi có không quá 100000 kí tự, bao gồm cả dấu cách


Định dạng đầu ra: Tìm kí tự có số lần xuất hiện nhiều nhất và có thứ tự từ điển nhỏ nhất


Input:
1
abcdzzzzu abed
Output:
z

Số xuất hiện nhiều nhất trong mảng (map)

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

Point: 1

Tìm số xuất hiện nhiều nhất trong mảng, nếu có nhiều số có cùng số lần xuât hiện nhiều nhất thì in ra số nhỏ hơn


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

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

Mỗi test case bao gồm nhiều dòng, dòng đầu tiên là số lượng phần tử trong mảng. (1≤n≤100000).

Dòng thứ 2 bao gồm n phần tử trong mảng. (-10^18 <= ai <= a0^18).


Định dạng đầu ra: In ra số xuất hiện nhiều nhất cùng số lần xuất hiện của nó


Input:
1
10
1 1 2 2 2 1 4 7 8 19
Output:
1 3

Đếm các phần tử khác nhau trong mảng (set)

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

Point: 1

Đếm số lượng phần tử khác nhau trong mảng số nguyên


Định dạng đầu vào: Dòng đầu tiên là số lượng Test T (1 <= T <= 100)

Mỗi test case bao gồm 2 dòng, dòng đầu tiên là số lượng phần tử trong mảng (1≤n≤1000)

Dòng thứ 2 bao gồm n phần tử trong mảng (-10^9 ≤ ai ≤ 10^9)


Định dạng đầu ra: In ra số lượng phần tử khác nhau trong mảng.


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

Mảng con dài nhất mà mỗi phần tử chỉ xuất hiện 1 lần (sắp xếp - tìm kiếm)

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

Point: 1

Bạn được cung cấp một danh sách phát các bài hát của một đài phát thanh kể từ khi đài đó được thành lập. Danh sách bài hát có tổng cộng n bài hát. Hãy tìm danh sách con các bài hát liên tiếp dài nhất mà mỗi bài hát là duy nhất?


Đầu vào: Dòng đầu tiên chứa một số nguyên n là số lượng bài hát. Dòng tiếp theo có n số nguyên k1, k2,... kn là số id của mỗi bài hát.


Ràng buộc: 1≤n≤2.10^5; 1≤ki≤10^9


Đầu ra: In độ dài của chuổi bài hát dài nhất mà các bài hát này mỗi bài hát chỉ xuất hiện 1 lần.


Input:
5
1 2 3 4 5
Output:
5

Đếm mảng con có k phần tử khác nhau (sắp xếp - tìm kiếm, sử dụng map)

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

Point: 1

Cho một mảng n số nguyên, nhiệm vụ của bạn là tính số mảng con liên tiếp có nhiều nhất k giá trị khác nhau.


Dòng nhập đầu tiên có hai số nguyên n và k. Dòng tiếp theo có n số nguyên x1, x2,.... xn


Ràng buộc: 1 ≤ k, n ≤ 2•10^5; 1 ≤ xi ≤ 10^9


Đầu ra: In ra một số nguyên là số mảng con


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

Đếm số mảng con (có thể có số âm) có tổng bằng X (sử dụng map - 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 gồm n số nguyên, nhiệm vụ của bạn là đếm số mảng con (dãy con các phần tử liên tiếp) có tổng bằng x.


Đầu vào: Dòng đầu tiên có hai số nguyên n và x: kích thước của mảng và tổng mục tiêu x. Dòng tiếp theo có n số nguyên a1, a2..., an: các phần tử trong mảng


1 <= n <= 2*10^5; -10^9 <= x, a i ≤ 10^9


Đầu ra: In một số nguyên là số lượng mảng con.


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

Đếm số mảng con có tổng bằng X (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 gồm n số nguyên dương, nhiệm vụ của bạn là đếm số mảng con (dãy con các phần tử liên tiếp) có tổng bằng x.


Đầu vào: Dòng đầu tiên có hai số nguyên n và x: kích thước của mảng và tổng mục tiêu x. Dòng tiếp theo có n số nguyên a1, a2..., an: các phần tử trong mảng


Ràng buộc: 1 <= n <= 2.10^5; 1 <= x,ai <= 10^9


In một số nguyên: số lượng mảng con.


Input:
5 7
2 4 1 2 7
Output:
3

Đếm từ xuất hiện trong xâu (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 đếm xem mỗi từ trong xâu xuất hiện bao nhiêu lần, đầu tiên hãy liệt kê các từ trong xâu kèm theo tần suất của mỗi từ theo thứ tự từ điển, sau đó liệt kê các từ trong xâu theo thứ tự xuất hiện.


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


Đầu ra: Đầu tiên in ra các từ trong xâu và tần suất của nó theo thứ tự từ điển. Sau đó bỏ trống 1 dòng và in ra các từ trong xâu và tần suất của nó theo thứ tự xuất hiện trong xâu.


Input:
bb aa bb cc aa bb cc
Output:
aa 2
bb 3
cc 2

bb 3
aa 2
cc 2

Số lần xuất hiện của ký tự trong xâu (xâu ký tự cơ bản)

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

Point: 1

Cho một xâu S nhập từ bàn phím. Đếm số lần xuất hiện của các ký tự trong xâu và in ra theo thứ tự xuất hiện trong xâu S


Ràng buộc: Độ dài xâu S đến ~10^6~


Input 01:
abcabcd
Output 01:
a 2
b 2
c 2
d 1

Giải thích: a xuất hiện 2 lần, b xuất hiện 2 lần, c xuất hiện 2 lần và d xuất hiện 1 lần


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

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

Dãy con có tổng bằng 0 dài nhất (mảng 1 chiều nâng cao)

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ử bằng 0. Nếu có nhiều dãy con thỏa mãn thì in ra dãy con đầu tiên, in ra "NOT FOUND" nếu không có dãy con nào có tổng bằng 0


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


Input 01:
15
-4 1 2 -1 2 -3 -8 2 1 -2 -8 7 -5 2 8
Output 01:
-4 1 2 -1 2
Input 02:
4
1 2 3 -4
Output 02:
NOT FOUND

Dãy con liên tiếp dài nhất có tổng chia hết cho K (Mảng 1 chiều nâng cao)

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~; ~0 \leq A[i] \leq 10^6~


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

Dãy con liên tiếp dài nhất có tổng chia hết cho 2 có 12 phần tử (chính là mảng ban đầu)


Cặp số có hiệu bằng K

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ố X. Nhiệm vụ của bạn là tìm cặp phần tử A[i] - A[j] = X.

Nếu tồn tại A[i] - A[j] = X đưa ra 1, ngược lại đưa ra -1.

Input Format: Dòng thứ nhất là cặp số N, X; Dòng tiếp theo là N số A(i] là các phần tử của mảng A.

Ràng buộc: ~1 ≤ N ≤ 10^5~; ~1 ≤ X, A[i] ≤ 10^{5}~.


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

Giải thích: Cặp số có hiệu bằng 4 là 5 và 1

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

Phần tử xuất hiện nhiều nhất

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ử, tìm phần tử có tần suất xuất hiện nhiều nhất, nếu có nhiều phần tử có cùng tần suất xuất hiện thì in ra phần tử có giá trị lớn hơ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:
1 3

Số 1 có tần suất xuất hiện 3 lần là lớn nhất

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

Số 1 và số 5 đều có tần suất xuất hiện 2 lần nhưng in ra số 5 vì 5 lớn hơn 1


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