You are on page 1of 24

SEGMENT TREE EZ

1. STEZ1
Cho một dãy số gồm 𝑁 phần tử 𝑎1 , 𝑎2 , . . 𝑎𝑁 . Người ta áp dụng Q truy vấn trên dãy thuộc
hai loại như sau:
• 1 𝑥 𝑦: Thay đổi phần tử ở vị trí thứ 𝑥 thành giá trị 𝑦
• 2 𝑙 𝑟: In ra giá trị lớn nhất trong dãy 𝑎 từ vị trí 𝑙 đến vị trí 𝑟.
Yêu cầu: Với mỗi thao tác loại 2, in ra câu trả lời trên một dòng.
INPUT
• Dòng đầu ghi số nguyên dương 𝑁. (1 ≤ 𝑁 ≤ 105 )
• Dòng thứ hai chứa 𝑁 số 𝑎𝑖 ( |𝑎𝑖 | ≤ 109 ).
• Dòng thứ ba chứa số nguyên dương 𝑄 (1 ≤ 𝑄 ≤ 105 )
• 𝑄 dòng sau, mỗi dòng chứa một truy vấn thuộc hai loại trên
OUTPUT
Với mỗi thao tác loại 2, in ra câu trả lời trên một dòng.

INPUT OUTPUT
5 4
1 4 2 3 5 5
6 5
2 1 3 3
1 3 3
2 1 5
2 3 5
1 2 3
2 2 4

2. STEZ2
Cho một dãy số gồm 𝑁 phần tử 𝑎1 , 𝑎2 , . . 𝑎𝑁 . Ban đầu tất cả các phần tử đều có giá trị
bằng 0. Người ta áp dụng Q truy vấn trên dãy thuộc hai loại như sau:
• 1 𝑥 𝑦: Thay đổi phần tử ở vị trí thứ 𝑥 thành giá trị 𝑦
• 2 𝑙 𝑟: In ra tổng các phần tử từ vị trí 𝑙 đến vị trí 𝑟.
Yêu cầu: Với mỗi thao tác loại 2, in ra câu trả lời trên một dòng.
INPUT
• Dòng đầu ghi số nguyên dương 𝑁, 𝑄. (1 ≤ 𝑁 ≤ 105 , 1 ≤ 𝑄 ≤ 105 )
• 𝑄 dòng sau, mỗi dòng chứa một truy vấn thuộc hai loại trên
OUTPUT
Với mỗi thao tác loại 2, in ra câu trả lời trên một dòng.

1
INPUT OUTPUT
5 8 7
1 1 2 11
1 3 5 10
2 1 3
1 5 4
2 1 5
1 4 3
1 3 5
2 1 4

3. STEZ3
Cho một dãy số gồm 𝑁 phần tử 𝑎1 , 𝑎2 , . . 𝑎𝑁 . Người ta áp dụng Q truy vấn trên dãy thuộc
hai loại như sau:
• 1 𝑥 𝑦 𝑣𝑎𝑙 : Tăng phần tử từ vị trí thứ 𝑥 đến vị trí thứ 𝑦 lên 𝑣𝑎𝑙 đơn vị
• 2 𝑙 𝑟: In ra giá trị lớn nhất trong dãy 𝑎 từ vị trí 𝑙 đến vị trí 𝑟.
Yêu cầu: Với mỗi thao tác loại 2, in ra câu trả lời trên một dòng.
INPUT
• Dòng đầu ghi số nguyên dương 𝑁. (1 ≤ 𝑁 ≤ 105 )
• Dòng thứ hai chứa 𝑁 số 𝑎𝑖 ( |𝑎𝑖 | ≤ 109 ).
• Dòng thứ ba chứa số nguyên dương 𝑄 (1 ≤ 𝑄 ≤ 105 )
• 𝑄 dòng sau, mỗi dòng chứa một truy vấn thuộc hai loại trên
OUTPUT
Với mỗi thao tác loại 2, in ra câu trả lời trên một dòng.

INPUT OUTPUT
3 8
1 2 3 7
7 9
1 1 3 1
1 2 3 4
2 1 3
1 1 1 5
2 1 2
1 1 2 2
2 2 3

4. STEZ4
Cho một dãy số gồm 𝑁 phần tử nguyên 𝑎1 , 𝑎2 , . . 𝑎𝑁 . Bạn cần chọn ra một số số trong dãy
𝑎 sao cho:

2
• Có thể không chọn phần tử nào.
• Hai số được chọn liên tiếp có hiệu chỉ số không vượt quá 𝐾. Tức là, nếu bạn đã
chọn phần tử ở vị trí 𝑖 thì phần tử tiếp theo bạn chọn phải có vị trí không vượt quá
𝑖 + 𝐾.
• Tổng các phần tử được chọn là lớn nhất.
INPUT
• Dòng đầu ghi số nguyên dương 𝑁, 𝐾. (1 ≤ 𝑁, 𝐾 ≤ 105 )
• Dòng thứ hai chứa 𝑁 số 𝑎𝑖 ( |𝑎𝑖 | ≤ 109 ).
OUTPUT
Một số duy nhất là tổng lớn nhất tìm được

INPUT OUTPUT
5 2 8
-1 -2 3 -4 5
5 1 0
-1 -2 -3 -4 -5

5. STEZ5
Viết một cây phân đoạn thông thường để tính tổng 1 đoạn và cập nhật 1 điểm
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng
và số lượng thao tác.
• Dòng tiếp theo chứa 𝑛 số 𝑎𝑖 , trạng thái ban đầu của mảng (0 ≤ 𝑎𝑖 ≤ 109 ). Các
dòng tiếp theo chứa mô tả của các thao tác. Mô tả có dạng như sau:
○ 1 𝑖 𝑣: đặt phần tự có chỉ số 𝑖 thành 𝑣 (1 ≤ 𝑖 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 ).
○ 2 𝑙 𝑟: tính tổng các phần tử trong đoạn có chỉ số từ 𝑙 đến 𝑟 (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛).
OUTPUT
Đối với mỗi thao tác loại 2, in ra tổng tương ứng
INPUT OUTPUT
5 5 12
3 11 16 6 9 31
1 3 0 20
1 4 1
2 2 4
2 2 5
2 3 5

3
6. STEZ06
Viết một cây phân đoạn thông thường để tính 𝑚𝑖𝑛 1 đoạn và cập nhật 1 điểm
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng
và số lượng thao tác.
• Dòng tiếp theo chứa 𝑛 số 𝑎𝑖 , trạng thái ban đầu của mảng (0 ≤ 𝑎𝑖 ≤ 109 ). Các
dòng tiếp theo chứa mô tả của các thao tác. Mô tả có dạng như sau:
○ 1 𝑖 𝑣: đặt phần tự có chỉ số 𝑖 thành 𝑣 (1 ≤ 𝑖 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 ).
○ 2 𝑙 𝑟: tính 𝑚𝑖𝑛 các phần tử trong đoạn có chỉ số từ 𝑙 đến 𝑟 (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛).
OUTPUT
Đối với mỗi thao tác loại 2, in ra 𝑚𝑖𝑛 tương ứng
INPUT OUTPUT
5 5 4
6 17 9 11 4 17
2 3 5 4
2 2 2 4
2 5 5 4
2 4 5
2 5 5

7. STEZ07
Viết một cây phân đoạn để tính 𝑔𝑐𝑑 1 đoạn và cập nhật 1 điểm
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng
và số lượng thao tác.
• Dòng tiếp theo chứa 𝑛 số 𝑎𝑖 , trạng thái ban đầu của mảng (0 ≤ 𝑎𝑖 ≤ 109 ). Các
dòng tiếp theo chứa mô tả của các thao tác. Mô tả có dạng như sau:
○ 1 𝑖 𝑣: đặt phần tự có chỉ số 𝑖 thành 𝑣 (1 ≤ 𝑖 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 ).
○ 2 𝑙 𝑟: tính 𝑔𝑐𝑑 các phần tử trong đoạn có chỉ số từ 𝑙 đến 𝑟 (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛).
OUTPUT
Đối với mỗi thao tác loại 2, in ra 𝑔𝑐𝑑 tương ứng
INPUT OUTPUT
5 5 1
11 8 3 5 13 3
1 4 15 1
2 2 5 1
2 3 4
2 1 2
2 4 5

4
8. STEZ08
Viết một cây phân đoạn để tính 𝑚𝑖𝑛 1 đoạn và số lượng chỉ số bằng 𝑚𝑖𝑛 trong đoạn đó
và cập nhật 1 điểm
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng
và số lượng truy vấn.
• Dòng tiếp theo chứa 𝑛 số 𝑎𝑖 , trạng thái ban đầu của mảng (0 ≤ 𝑎𝑖 ≤ 109 ). Các
dòng tiếp theo chứa mô tả của các thao tác. Mô tả có dạng như sau:
○ 1 𝑖 𝑣: đặt phần tự có chỉ số 𝑖 thành 𝑣 (1 ≤ 𝑖 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 ).
○ 2 𝑙 𝑟: tính 𝑚𝑖𝑛 trên đoạn [𝑙, 𝑟] và số lượng phần tử bằng 𝑚𝑖𝑛 (1 ≤ 𝑙 ≤ 𝑟 ≤
𝑛).
OUTPUT
Đối với mỗi truy vấn loại 2, in ra 2 số nguyên: 𝑚𝑖𝑛 trên [𝑙, 𝑟] và số lượng phần tử bằng
𝑚𝑖𝑛
INPUT OUTPUT
5 5 10 1
11 13 13 13 10 10 1
2 2 5 13 2
2 5 5 11 1
1 5 13
2 2 3
2 1 3

9. STEZ09
Tìm ra đoạn có tổng lớn nhất bằng cách xây dựng cây phân đoạn
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng
và số lượng thao tác.
• Dòng tiếp theo chứa 𝑛 số 𝑎𝑖 , trạng thái ban đầu của mảng (−109 ≤ 𝑎𝑖 ≤ 109 ).
Các dòng tiếp theo chứa mô tả của các thao tác. Mô tả có dạng như sau: 𝑖 𝑣: đặt
phần tử có chỉ số 𝑖 thành 𝑣 (1 ≤ 𝑖 ≤ 𝑛, −109 ≤ 𝑣 ≤ 109 ).
OUTPUT
In ra 𝑚 + 1 dòng: In tổng lớn nhất của các số trên 1 đoạn của mảng, trước và sau các
thao tác. Lưu ý đoạn có thể rỗng (tổng = 0)
INPUT OUTPUT
5 5 4
-9 4 -9 1 3 4
4 4 4
4 -3 4
3 -4 4
5 0 0
2 -6

5
10.STEZ10
Cho 1 mảng gồm 𝑛 số nguyên, xử lý 𝑞 truy vấn 2 loại sau:
• Cập nhật giá trị vị trí 𝑖 thành 𝑢
• Tìm tổng tiền tố lớn nhất trong khoảng [𝑎, 𝑏]
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑞 (1 ≤ 𝑛, 𝑞 ≤ 105 ), số lượng giá trị và truy
vấn
• Dòng thứ 2 chứa 𝑛 số nguyên 𝑥1 , 𝑥2 , … , 𝑥𝑛 , các giá trị của mảng
• Cuối cùng có 𝑞 dòng mô tả các truy vấn. Mỗi dòng chứa 3 số nguyên:
○ 1 𝑖 𝑢: cập nhật giá trị tại vị trí 𝑖 thành 𝑢
○ 2 𝑎 𝑏: tìm tổng tiền tố lớn nhất trong khoảng [𝑎, 𝑏]
OUTPUT
In ra kết quả của mỗi truy vấn loại 2
INPUT OUTPUT
5 5 0
1 1 -2 -4 -5 0
1 1 -9 1
2 5 5 1
2 4 5
2 2 2
2 2 4

11.STEZ11
Ta cần tìm phần tử giá trị 1 thứ 𝑘 trên mảng gồm các số 0 và 1
INPUT
• Dòng đầu chứa 2 số nguyên 𝑛, 𝑞 (1 ≤ 𝑛, 𝑞 ≤ 105 ), là kích thước mảng và số truy
vấn
• Dòng tiếp theo chứa 𝑛 số nguyên 𝑎𝑖 là trạng thái ban đầu của mảng (𝑎𝑖 = 0 hoặc 1)
• Các dòng tiếp theo chứa mô tả của truy vấn có dạng:
○ 1 𝑖: thay đổi phần tử thứ 𝑖 thành giá trị ngược lại 𝑎[𝑖] = 1– 𝑎[𝑖]
○ 2 𝑘: tìm phần tử thứ 𝑘 có giá trị 1 (đảm bảo có đủ số lượng số 1)
OUTPUT
Đối với mỗi phép tính thuộc loại thứ 2, in ra chỉ số của phần tử 1 tương ứng (các chỉ số
được tính từ 1)
INPUT OUTPUT
5 5 2
1 1 0 1 1 1
2 2 2
1 4 5
2 1
2 2
2 3

6
12.STEZ12
Ta cần thêm phép tính tìm chỉ số 𝑗 nhỏ nhất sao cho 𝑥 ≤ 𝑎[𝑗]
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), là kích thước mảng và
số lượng truy vấn
• Dòng tiếp theo chứa 𝑛 số nguyên 𝑎𝑖 là trạng thái ban đầu của mảng (0 ≤ 𝑎𝑖 ≤
109 ). Các dòng tiếp theo chứa mô tả của các phép tính có dạng:
○ 1 𝑖 𝑣: thay đổi giá trị của phần tử thứ 𝑖 bằng 𝑣 (1 ≤ 𝑖 ≤ 𝑛, 0 ≤ 𝑎𝑖 ≤ 109 )
○ 2 𝑥: tìm chỉ số 𝑗 nhỏ nhất sao cho 𝑥 ≤ 𝑎[𝑗]. Nếu không tìm được in ra -1.
Chỉ số được tính từ 1
OUTPUT
In ra kết quả của mỗi truy vấn loại 2
INPUT OUTPUT
5 5 -1
4 0 3 1 7 -1
2 8 1
2 10 3
1 3 10
2 0
2 7

13.STEZ13
Ta cần thêm phép tính tìm chỉ số 𝑗 nhỏ nhất sao cho 𝑎[𝑗] ≥ 𝑥 𝑣à 𝑗 ≥ 𝑙.
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), là kích thước mảng và
số lượng truy vấn
• Dòng tiếp theo chứa 𝑛 số nguyên 𝑎𝑖 là trạng thái ban đầu của mảng (0 ≤ 𝑎𝑖 ≤
109 ). Các dòng tiếp theo chứa mô tả của các phép tính có dạng:
○ 1 𝑖 𝑣: thay đổi giá trị của phần tử thứ 𝑖 bằng 𝑣 (1 ≤ 𝑖 ≤ 𝑛, 0 ≤ 𝑎𝑖 ≤ 109 )
○ 2 𝑥 𝑙: tìm chỉ số j min sao cho 𝑎[𝑗] ≥ 𝑥 và 𝑗 ≥ 𝑙 (0 ≤ 𝑥 ≤ 109 , 1 ≤
𝑙 ≤ 𝑛). Nếu không tìm được in ra -1. Chỉ số bắt đầu từ 1
OUTPUT
Đối với mỗi phép tính thuộc loại thứ 2 in ra kết quả của truy vấn
INPUT OUTPUT
5 5 2
6 10 1 7 7 1
1 4 2 5
1 5 6
2 7 1
2 5 1
2 3 5

7
14.STEZ14
Cho một hoán vị 𝑝𝑖 của 𝑛 phần tử, tìm số lượng 𝑗 thoả mãn 𝑗 < 𝑖 𝑣à 𝑝𝑗 > 𝑝𝑖 cho mỗi i
INPUT
Dòng đầu tiên chứa số 𝑛 (1 ≤ 𝑛 ≤ 105 ), dòng thứ 2 chứa 𝑛 số 𝑝𝑖 . Đảm bảo rằng 𝑝𝑖 tạo
thành 1 hoán vị của các số từ 1 đến 𝑛.
OUTPUT
In ra 𝑛 số, số thứ 𝑖 là số lượng 𝑗 thoả mãn 𝑗 < 𝑖 𝑣à 𝑝𝑗 > 𝑝𝑖 .
INPUT OUTPUT
5 0 1 2 2 2
5 4 1 2 3

15.STEZ15
Ngược lại với STEZ14, cho dãy 𝑛 số nguyên 𝑎𝑖 là số lượng 𝑗 thoả mãn 𝑗 < 𝑖 𝑣à 𝑝𝑗 > 𝑝𝑖 .
Hãy khôi phục lại dãy hoán vị ban đầu
INPUT
Dòng đầu chứa số 𝑛 (1 ≤ 𝑛 ≤ 105 ), dòng thứ 2 chứa 𝑛 số 𝑎𝑖 . Đảm bảo rằng 𝑎𝑖 đã được
thu được từ một hoán vị bằng cách sử dụng quy trình mô tả trong đề bài
OUTPUT
In ra 𝑛 số là hoán vị ban đầu
INPUT OUTPUT
5 4 3 1 2 5
0 1 2 2 0

16.STEZ16
Cho một mảng 2𝑛 phần tử, mỗi số từ 1 đến 𝑛 xuất hiện đúng 2 lần trong mảng đó.
Chúng ta nói rằng đoạn 𝑦 được lồng trong đoạn 𝑥 nếu cả 2 lần xuất hiện của số 𝑦 nằm
trong 2 lần xuất hiện của số 𝑥.
Tìm số đoạn lồng bên trong mỗi đoạn 𝑖 (1 ≤ 𝑖 ≤ 𝑛)
INPUT
Dòng đầu tiên chứa số 𝑛 (1 ≤ 𝑛 ≤ 105 ), dòng thứ 2 chứa 2𝑛 số. Đảm bảo rằng mỗi số
từ 1 đến 𝑛 xuất hiện đúng 2 lần.
OUTPUT
In ra 𝑛 số, số thứ 𝑖 là số đoạn lồng bên trong đoạn 𝑖
INPUT OUTPUT
5 2 0 1 0 0
1 4 5 3 4 5 1 2 2 3

17.STEZ17
Cho một mảng 2𝑛 phần tử, mỗi số từ 1 đến 𝑛 xuất hiện đúng 2 lần trong mảng đó. Chúng
ta nói rằng đoạn 𝑦 giao nhau với đoạn 𝑥 nếu đúng 1 lần xuất hiện của số 𝑦 nằm trong 2
lần xuất hiện của số 𝑥. Tìm số đoạn giao nhau với mỗi đoạn 𝑖 (1 ≤ 𝑖 ≤ 𝑛)
8
INPUT
• Dòng đầu tiên chứa số 𝑛 (1 ≤ 𝑛 ≤ 105 ),
• Dòng thứ 2 chứa 2𝑛 số. Đảm bảo rằng mỗi số từ 1 đến 𝑛 xuất hiện đúng 2 lần.
OUTPUT
In ra 𝑛 số, số thứ 𝑖 là số đoạn giao nhau với đoạn 𝑖
INPUT OUTPUT
5 2 2 0 3
1 2 3 5 1 3 2 4 4 5

18.STEZ18
Cho một mảng gồm 𝑛 phần tử, ban đầu được điền bằng số không. Viết 1 cấu trúc dữ liệu
xử lý 2 loại truy vấn sau:
Thêm vào đoạn [𝑙, 𝑟] giá trị 𝑣
Tìm giá trị hiện tại của phần tử 𝑖
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số lượng
truy vấn. Các dòng tiếp theo chứa mô tả các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: thêm vào [𝑙, 𝑟] giá trị 𝑣 (1 ≤ 𝑙, 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 )
• 2 𝑖: tìm giá trị hiện tại của phần tử với chỉ số 𝑖 (1 ≤ 𝑖 ≤ 𝑛)
OUTPUT
Đối với mỗi truy vấn loại 2 in ra giá trị tương ứng
INPUT OUTPUT
5 4 6
1 1 5 6 11
1 3 4 5
2 5
2 4

19.STEZ19
Có một mảng gồm n phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2
loại truy vấn sau: Với mỗi 𝑖 thuộc [𝑙, 𝑟], thực hiện phép gán 𝑎𝑖 = 𝑚𝑎𝑥 (𝑎𝑖 , 𝑣). Tìm giá trị
hiện tại ở phần tử thứ 𝑖
INPUT
Dòng đầu tiên chứa hai số nguyên 𝑛, 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số
truy vấn. Các dòng tiếp theo chứa mô tả các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: Đối với mỗi 𝑖 thuộc [𝑙, 𝑟], thực hiện phép thay đổi 𝑎𝑖 = 𝑚𝑎𝑥(𝑎𝑖 , 𝑣) (1 ≤
𝑙 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 ).
• 2 𝑖: tìm giá trị hiện tại của phần tử với chỉ số 𝑖 (1 ≤ 𝑖 ≤ 𝑛)
OUTPUT
In ra kết quả với mỗi truy vấn loại 2

9
INPUT OUTPUT
5 5 9
1 1 4 9 10
2 4 9
1 4 5 10
2 4
2 2

20.STEZ20
Có một mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2
loại truy vấn sau:
Gán giá trị 𝑣 cho tất cả các phần tử thuộc đoạn [𝑙, 𝑟]. Tìm giá trị của phần tử thứ 𝑖.
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước mảng và số lượng truy
vấn. Các dòng tiếp theo mô tả các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: Gán giá trị tất cả phần tử trong đoạn [𝑙, 𝑟] bằng 𝑣 (0 ≤ 𝑣 ≤ 109 )
• 2 𝑖: tìm giá trị của phần tử có chỉ số 𝑖
OUTPUT
In ra kết quả của mỗi truy vấn loại 2
INPUT OUTPUT
5 5 8
1 2 4 8 0
2 2 7
2 5
1 3 5 7
2 4

21.STEZ21
Có một mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2
loại truy vấn sau: Thêm giá trị 𝑣 vào [𝑙, 𝑟]. Tìm giá trị nhỏ nhất trong đoạn [𝑙, 𝑟]
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số lượng
truy vấn. Các dòng tiếp theo chứa mô tả của các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: thêm giá trị 𝑣 vào đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 )
• 2 𝑙 𝑟: tìm giá trị nhỏ nhất trong đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛)
OUTPUT
In ra kết quả tương ứng với mỗi truy vấn loại 2
INPUT OUTPUT
5 4 0
2 1 3 4
1 3 5 6
1 1 2 4
2 2 3

10
22.STEZ22
Có mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 1. Viết cấu trúc dữ liệu xử lý 2 loại
truy vấn sau:
Nhân giá trị 𝑣 vào đoạn [𝑙, 𝑟]. Tìm tổng trong đoạn [𝑙, 𝑟].
Tất cả phép toán đc 𝑚𝑜𝑑 109 + 7
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số lượng
truy vấn. Các dòng tiếp theo chứa mô tả của các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: nhân giá trị 𝑣 vào đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 0 ≤ 𝑣 < 109 + 7)
• 2 𝑙 𝑟: tìm tổng trong đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛)
OUTPUT
Đối với mỗi truy vấn loại 2 in ra giá trị tương ứng 𝑚𝑜𝑑 109 + 7
INPUT OUTPUT
5 5 5
2 1 5 3
2 2 4 8
1 2 3 8 16
2 2 2
2 2 3

23.STEZ23
Có mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2 loại
truy vấn sau:
𝑂𝑅 giá trị 𝑣 vào mọi phần tử trong đoạn [𝑙, 𝑟]. Tìm giá trị 𝐴𝑁𝐷 của tất cả các phần tử
trong đoạn [𝑙, 𝑟].
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số lượng
truy vấn. Các dòng tiếp theo chứa mô tả của các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: 𝑂𝑅 giá trị 𝑣 vào mọi phần tử trong đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤
109 )
• 2 𝑙 𝑟: tìm 𝐴𝑁𝐷 của tất cả phần tử trong đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛)
OUTPUT
In ra giá trị tương ứng với mỗi truy vấn loại 2
INPUT OUTPUT
5 5 0
2 3 4 5
1 1 3 4
1 4 5 2
1 1 4 1
2 1 3

11
24.STEZ24
Có mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2 loại
truy vấn sau:
Thêm giá trị 𝑣 vào đoạn [𝑙, 𝑟]. Tìm tổng trong đoạn [𝑙, 𝑟].
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số lượng
truy vấn. Các dòng tiếp theo chứa mô tả của các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: thêm giá trị 𝑣 vào đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 )
• 2 𝑙 𝑟: tìm tổng trong đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛)
OUTPUT
Đối với mỗi truy vấn loại 2 in ra giá trị tương ứng
INPUT OUTPUT
5 5 3
1 1 3 3 18
2 2 2 4
1 2 4 4
2 2 4
2 4 5

25.STEZ25
Có một mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2
loại truy vấn sau:
Gán giá trị 𝑣 vào [𝑙, 𝑟]. Tìm giá trị nhỏ nhất trong đoạn [𝑙, 𝑟]
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số lượng
truy vấn. Các dòng tiếp theo chứa mô tả của các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: gán giá trị 𝑣 vào đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 )
• 2 𝑙 𝑟: tìm giá trị nhỏ nhất trong đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛)
OUTPUT
In ra kết quả tương ứng với mỗi truy vấn loại 2
INPUT OUTPUT
5 5 3
1 1 3 3 4
2 2 2 0
1 2 4 4
2 2 4
2 4 5

26.STEZ26
Có một mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2
loại truy vấn sau:
Gán giá trị 𝑣 vào [𝑙, 𝑟]. Tìm tổng trong đoạn [𝑙, 𝑟]
12
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số lượng
truy vấn. Các dòng tiếp theo chứa mô tả của các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: gán giá trị 𝑣 vào đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 )
• 2 𝑙 𝑟: tìm tổng trong đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛)
OUTPUT
In ra kết quả tương ứng với mỗi truy vấn loại 2
INPUT OUTPUT
5 5 10
1 3 4 4 17
1 3 4 7
1 2 2 3
2 1 3
2 1 5

27.STEZ27
Có một mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2
loại truy vấn sau: Gán giá trị 𝑣 vào [𝑙, 𝑟]. Tìm đoạn con có tổng lớn nhất trong đoạn [𝑙, 𝑟]
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước của mảng và số lượng
truy vấn. Các dòng tiếp theo chứa mô tả của các truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: gán giá trị 𝑣 vào đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤ 109 )
• 2 𝑙 𝑟: tìm đoạn con có tổng lớn nhất trong đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛)
OUTPUT
In ra kết quả tương ứng với mỗi truy vấn loại 2
INPUT OUTPUT
5 5 9
1 2 4 -6 9
1 4 5 9 0
2 2 4
2 1 4
2 1 3

28.STEZ28
Có một mảng gồm 𝑛 phần tử, ban đầu được điền bằng số 0. Viết cấu trúc dữ liệu xử lý 2
loại truy vấn sau: Thay đổi nghịch đảo (1 → 0,0 → 1) trên đoạn [𝑙, 𝑟]. Tìm chỉ số của số
1 thứ 𝑘
INPUT
Dòng đầu tiên chứa 2 số 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), kích thước mảng và số lượng truy
vấn. Các dòng tiếp theo chứa mô tả các truy vấn có dạng:
• 1 𝑙 𝑟: Thay đổi nghịch đảo các số trên đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛)
• 2 𝑘: Tìm chỉ số của số 1 thứ 𝑘 (1 ≤ 𝑘 ≤ 𝑛). In ra -1 nếu không tồn tại.

13
OUTPUT
Đối với mỗi truy vấn loại 2, in ra kết quả tương ứng
INPUT OUTPUT
5 5 3
1 2 3 1
1 3 4
1 1 3
2 2
2 1

29.STEZ29
Ban đầu ta có 1 mảng 𝑛 phần tử với giá trị 0. Ta cần thêm phép tính tìm chỉ số nhỏ nhất 𝑗
trong cây phân đoạn sao cho 𝑎[𝑗] ≥ 𝑥 và 𝑗 ≥ 𝑙, và hỗ trợ thực hiện cập nhật trên 1 đoạn.
INPUT
Dòng đầu tiên chứa 2 số nguyên 𝑛 và 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 105 ), là kích thước mảng và số
lượng truy vấn. Các dòng tiếp theo chứa mô tả truy vấn có dạng:
• 1 𝑙 𝑟 𝑣: cộng thêm 𝑣 vào các phần tử trên đoạn [𝑙, 𝑟] (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 0 ≤ 𝑣 ≤
109 )
• 2 𝑥 𝑙: tìm chỉ số nhỏ nhất 𝑗 sao cho 𝑎[𝑗] ≥ 𝑥 và 𝑗 ≥ 𝑙. Nếu không có phần tử thoả
mãn, in ra -1. Các chỉ số bắt đầu từ 1.
OUTPUT
In ra kết quả của mỗi truy vấn loại 2
INPUT OUTPUT
5 5 5
2 0 5 4
1 2 5 9
1 4 5 2
1 2 5 10
2 20 3

30.STEZ30
Anh nhân viên chăm chỉ đang làm việc cho công ty Bờ Lóc Trên trong phòng ban cấu
trúc dữ liệu. Vì không phải anh nhân viên may mắn nên đã không thành công như mong
đợi với nhiệm vụ trước về việc chèn khoá, anh được yêu cầu viết 1 cấu trúc dữ liệu mới
có khả năng trả về nhanh chóng các thống kê thứ tự 𝑘 trong một phân đoạn của mảng.
Nghĩa là với một mảng 𝑎[1 … 𝑛] chứa các số nguyên khác nhau, chương trình phải trả lời
một loạt các câu hỏi 𝑄(𝑖, 𝑗, 𝑘) theo dạng: “Nếu phân đoạn 𝑎[𝑖 … 𝑗] được sắp xếp, thì số
thứ 𝑘 trong đoạn sẽ là gì?”
VD: giả sử mảng 𝑎 = (1,5,2,6,3,7,4). Với câu hỏi 𝑄(2,5,3). Phân đoạn 𝑎[2 … 5] là
(5,2,6,3). Nếu chúng ta sắp xếp phân đoạn này ta được (2,3,5,6), số thứ 3 là 5, do đó câu
trả lời là 5.

14
INPUT
• Dòng đầu tiên chứa 2 số 𝑛, 𝑞 (1 ≤ 𝑛, 𝑞 ≤ 105 ), kích thước mảng và số lượng
câu hỏi cần trả lời.
• Dòng thứ 2 chứa 𝑛 số nguyên phân biệt 𝑎𝑖 (|𝑎𝑖 | ≤ 109 ).
• q dòng tiếp theo, mỗi dòng chứa miêu tả của câu hỏi gồm: 𝑖, 𝑗, 𝑘 (1 ≤ 𝑖 ≤ 𝑗 ≤
𝑛, 1 ≤ 𝑘 ≤ 𝑗 − 𝑖 + 1)
OUTPUT
In ra câu trả lời tương ứng với mỗi câu hỏi
INPUT OUTPUT
5 4 4
-7 7 4 -6 1 -7
1 3 2 7
1 5 1 7
2 3 2
2 2 1

31.STEZ31
Bài tập này rất đơn giản. Cho một chuỗi S có độ dài 𝑛 và 𝑞 truy vấn, mỗi truy vấn có
định dạng 𝑖 𝑗 𝑘, trong đó 𝑖, 𝑗 là vị trí bắt đầu và kết thúc của một đoạn con trong chuỗi, kể
từ vị trí 𝑖 đến 𝑗, và 𝑘 có giá trị 0 hoặc 1.
Nếu 𝑘 = 1, sắp xếp đoạn con theo thứ tự không giảm (tăng dần); nếu 𝑘 = 0, sắp xếp
đoạn con theo thứ tự không tăng (giảm dần)

INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛, 𝑞 (1 ≤ 𝑛 ≤ 105 , 0 ≤ 𝑞 ≤ 50000), độ dài
của chuỗi và số lượng truy vấn.
• Dòng tiếp chứa chuỗi S. Chuỗi này chỉ chứa ký tự viết thường trong tiếng Anh.
• 𝑞 dòng tiếp theo sẽ chứa 3 số nguyên 𝑖, 𝑗, 𝑘 (1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑚).
OUTPUT
In ra một dòng duy nhất, chuỗi S sau khi áp dụng các truy vấn
INPUT OUTPUT
10 5 cbcaaaabdd
abacdabcda
7 10 0
5 8 1
1 4 0
3 6 0
7 10 1

15
32.STEZ32
Bạn được cho n tập hợp các đoạn. Mỗi đoạn có thể được biểu diễn dưới dạng một cặp 2
số nguyên [𝑙, 𝑟], trong đó 𝑙 ≤ 𝑟. Mỗi tập hợp đoạn có thể chứa một số đoạn tùy ý (kể cả
0). Có thể có 1 số đoạn trùng nhau.
Bạn cũng được cho 𝑚 truy vấn, mỗi truy vấn có thể được biểu diễn dưới dạng 4 số:
𝑎, 𝑏, 𝑥, 𝑦. Đối với mỗi đoạn, hãy tìm ra xem có đúng hay không việc mọi tập hợp 𝑝 (𝑎 ≤
𝑝 ≤ 𝑏) chứa ít nhất một đoạn [𝑙, 𝑟] mà đoạn này phải nằm hoàn toàn trong đoạn
[𝑥, 𝑦], tức là 𝑥 ≤ 𝑙 ≤ 𝑟 ≤ 𝑦.
Lưu ý tằng bạn cần giải quyết bài toán này trực tuyến. Có nghĩa là bạn chỉ nhận được một
truy vấn mới sau khi in câu trả lời cho truy vấn trước đó
INPUT
• Dòng đầu tiên chứa 3 số nguyên 𝑛, 𝑚 và 𝑘 (1 ≤ 𝑛, 𝑚, 𝑘 ≤ 105 ) - số lượng tập
hợp, truy vấn và đoạn lần lượt
• Mỗi trong 𝑘 dòng tiếp theo chứa 3 số 𝑙, 𝑟 và 𝑝 (1 ≤ 𝑙 ≤ 𝑟 ≤ 109 , 1 ≤ 𝑝 ≤ 𝑛)
– giới hạn của đoạn và chỉ số của một tập hợp mà đoạn này thuộc về.
• Mỗi trong 𝑚 dòng tiếp theo chứa 4 số 𝑎, 𝑏, 𝑥, 𝑦 (1 ≤ 𝑎 ≤ 𝑏 ≤ 𝑛, 1 ≤ 𝑥 ≤
𝑦 ≤ 109 )
OUTPUT
In ra “yes” hoặc “no” tương ứng với kết quả truy vấn trên mỗi dòng
INPUT OUTPUT
5 5 5 yes
0 3 1 no
4 10 3 yes
5 8 4 no
1 8 5 no
3 10 2
3 4 3 10
1 3 1 8
1 1 0 10
1 5 1 7
2 4 8 9

33.STEZ33
Bạn được cho một đồ thị vô hướng có trọng số trên 𝑛 đỉnh và 𝑚 cạnh.
Tìm đường đi ngắn nhất từ đỉnh 𝑠 đến đỉnh 𝑡 hoặc thông báo rằng không tồn tại đường đi
như vậy.
INPUT
• Dòng đầu tiên chứa 2 số nguyên 𝑛, 𝑚 (1 ≤ 𝑛 ≤ 105 , 0 ≤ 𝑚 ≤ 105 ).
• Tiếp theo, 𝑚 dòng chứa mô tả về các cạnh của đồ thị.
Dòng thứ 𝑖 chứa 3 số nguyên 𝑢𝑖 , 𝑣𝑖 , 𝑥𝑖 (1 ≤ 𝑢𝑖 , 𝑣𝑖 ≤ 𝑛, 0 ≤ 𝑥 ≤ 105 ). Nghĩa
là các đỉnh có số 𝑢𝑖 và 𝑣𝑖 được kết nối bởi cạnh có đội dài 2𝑥𝑖 (2 mũ 𝑥𝑖 ).
• Dòng cuối chứa 2 số nguyên 𝑠 và 𝑡.

16
Các đỉnh được đánh số từ 1 đến 𝑛. Đồ thị không chứa cạnh lặp và khuyên.
OUTPUT
In độ dài đường đi ngắn nhất 𝑚𝑜𝑑 109 + 7 nếu tồn tại đường đi, và -1 nếu không tồn tại.
INPUT OUTPUT
4 4 3
1 4 2
1 2 0
2 3 0
3 4 0
1 4
4 3 112
1 2 4
2 3 5
3 4 6
1 4
5 5 1024
1 5 8
5 2 7
1 3 7
3 4 9
4 5 10
2 4

34.STEZ34
Đặt 𝑎 và 𝑏 là 2 số nguyên không âm. Định nghĩa phép cộng lạ của 𝑎 và 𝑏 như sau:
- Viết 1 số dưới số còn lại và dóng chúng theo cột đơn vị
- Cộng lại theo từng chữ số một và nối lại với nhau
Cho rằng cả 2 số đều có vô hạn chữ số 0 ở đầu
VD: phép cộng lạ của 3248 và 908

Cho xâu 𝑐 gồm 𝑛 chữ số từ 0 đến 9 và 𝑚 truy


vấn dạng:
𝑥 𝑑: thay chữ số thứ 𝑥 trong xâu 𝑐 thành 𝑑
Lưu ý rằng sau mỗi thao tác, xâu 𝑐 sẽ không có chữ số 0 ở đầu trong bất cứ lúc nào
Sau mỗi truy vấn, in ra số cặp (𝑎, 𝑏): 𝑎, 𝑏 ≥ 0 và phép cộng lạ của 𝑎 và 𝑏 bằng 𝑐.
Lưu ý: Số lượng có thể rất lớn nên in ra kết quả 𝑚𝑜𝑑 998244353.
INPUT
• Dòng 1 chứa 2 số 𝑛, 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 5 ∗ 105 )là độ dài xâu 𝑐 và số lượng truy vấn
• Dòng 2 chứa xâu 𝑐, chứa đúng 𝑛 chữ số
• Mỗi dòng trong 𝑚 dòng kế chứa 2 số nguyên 𝑥 𝑣à 𝑑 (1 ≤ 𝑥 ≤ 𝑛, 0 ≤ 𝑑 ≤ 9)

17
OUTPUT
In 𝑚 số nguyên, số thứ 𝑖 là số lượng cặp (𝑎, 𝑏) thoả mãn sau khi xử lý truy vấn thứ 𝑖 và
𝑚𝑜𝑑 998244353
INPUT OUTPUT
2 3 15
14 12
2 4 2
2 1
1 0

35.STEZ35
Pikachu là một con pokemon cute và sống theo bầy pikachu hoang.
Team R muốn ăn cắp tất cả những con pokemon và người huấn luyện Andrew sẽ giúp
bầy Pikachu chống cự.
Đầu tiên, Andrew chọn ra 1 quân đoàn không rỗng số pokemon. Hoặc có thể nói, Andrew
sẽ chọn mảng 𝑏 từ 𝑘 chỉ số sao cho 1 ≤ 𝑏1 < 𝑏2 < ⋯ < 𝑏𝑘 ≤ 𝑛, và quân đoàn sẽ chứa
các con pokemon với sức mạnh lần lượt là 𝑎𝑏1 , 𝑎𝑏2 , … , 𝑎𝑏𝑘 .
Sức mạnh của quân đoàn sẽ là tổng xen kẽ của dãy bằng 𝑎𝑏1 − 𝑎𝑏2 + 𝑎𝑏3 − 𝑎𝑏4 + ⋯
Andrew đang thử nghiệm với các cách sắp xếp pokemon, anh ta làm 𝑞 thao tác. Thao tác
thứ 𝑖 đổi chỗ con pokemon ở 𝑙𝑖 và 𝑟𝑖 .
Andrew muốn biết sức mạnh của quân đoàn ban đầu và sức mạnh của quân đoàn sau mỗi
lần thao tác.
INPUT
Mỗi test sẽ gồm nhiều test:
Dòng đầu chứa 1 số nguyên dương 𝑡 (1 ≤ 𝑡 ≤ 1000) – số lượng test, mỗi test sẽ có
• Dòng đầu của test gồm 2 số nguyên 𝑛, 𝑞 (1 ≤ 𝑛 ≤ 3 ∗ 105 , 0 ≤ 𝑞 ≤ 3 ∗ 105 )
là số lượng pokemon và số thao tác
• Dòng tiếp theo chứa 𝑛 số nguyên dương phân biệt 𝑎1 , 𝑎2 , … , 𝑎𝑛 (1 ≤ 𝑎𝑖 ≤ 𝑛) –
sức mạnh của các con pokemon
• Dòng thứ 𝑖 trong 𝑞 dòng còn lại gồm 2 số nguyên dương 𝑙𝑖 , 𝑟𝑖 (1 ≤ 𝑙𝑖 ≤ 𝑟𝑖 ≤ 𝑛)
là chỉ số 2 con pokemon được đổi chỗ
Chắc chắn rằng tổng 𝑛 của các test không vượt quá 3 ∗ 105 và tổng 𝑞 của các test không
quá 3 ∗ 105
OUTPUT
Với mỗi test, in 𝑞 + 1 số nguyên: sức mạnh của quân đoàn trước và sau mỗi lần đổi chỗ
INPUT OUTPUT
3 3
3 1 4
1 3 2 2
1 2 2
2 2 2
1 2 9
18
1 2 10
1 2 10
7 5 10
1 2 5 4 3 6 7 9
1 2 11
6 7
3 4
1 2
2 3

36. STEZ36
Sang và Khanh mỗi người có 1 cây có gốc gồm 𝑛 đỉnh. Cả 2 cây đều có gốc là 1.
Sang và Khanh từng đấm đá nhau. Sau hàng thập kỷ gửi nhau vào viện, họ trở thành đồng
đội trong một contest Codeforce. Để ăn mừng dịp này, họ tạo ra một đồ thị tưởng niệm
trên n đỉnh
Cả 2 sẽ thêm 1 cạnh giữa 𝑢 và 𝑣 nếu cả 2 điều kiện sau thoả mãn:
- 𝑢 hoặc 𝑣 là tổ tiên của nhau ở cây của Sang
- 𝑢 và 𝑣 không là tổ tiên của nhau ở cây của Khanh
Đỉnh 𝑢 được coi là tổ tiên của 𝑣 nếu 𝑢 nằm trong đường đi từ 1 (gốc) đến 𝑣.
Từ đâu ra, Mai cố tìm đám cực đại trong đồ thị tưởng niệm vì không lí do gì và thất bại
bởi vì đồ thị quá lớn.
Giúp Mai tìm kích thước của đám lớn nhất trong đồ thị đó.
Một tập con của đồ thị được coi là 1 đám khi và chỉ khi tất cả các cặp đỉnh đều có cạnh
nối với nhau.
INPUT
Dòng đầu chứa số nguyên 𝑡 (1 ≤ 𝑡 ≤ 3 ∗ 105 ) số lượng test. Mỗi test có dạng như sau
• Dòng đầu của mỗi test chứa 1 số nguyên n (2 ≤ 𝑛 ≤ 3 ∗ 105 ).
• Dòng thứ 2 của mỗi test chứ 𝑛 − 1 số nguyên 𝑎1 , … , 𝑎𝑛 (1 ≤ 𝑎𝑖 < 𝑖), 𝑎𝑖 là cha
của đỉnh 𝑖 trên cây của Sang.
• Dòng thứ 3 của mỗi test chứ 𝑛 − 1 số nguyên 𝑏1 , … 𝑏𝑛 (1 ≤ 𝑏𝑖 < 𝑖), 𝑏𝑖 là cha của
đỉnh 𝑖 trên cây của Khanh.
Chắc chắn rằng đồ thị đã cho là 1 cây
Chắc chắn rằng tổng 𝑛 của các test không quá 3 ∗ 105 .
OUTPUT
Với mỗi test, in ra số nguyên là kích thước của đám lớn nhất trong đồ thị tưởng niệm.
INPUT OUTPUT
4 1
4 4
1 2 3 1
1 2 3 3

19
5
1 2 3 4
1 1 1 1
6
1 1 1 1 2
1 2 1 2 2
7
1 1 3 4 4 5
1 2 1 4 2 5

37.STEZ37
Cho mảng 𝐴 (0 ≤ 𝐴𝑖 < 230 ) độ dài 𝑁 (1 ≤ 𝑁 ≤ 3 ∗ 105 ).
Cho 𝑄 (1 ≤ 𝑄 ≤ 3 ∗ 105 ) truy vấn. Truy vấn thứ 𝑖 gồm 𝑇𝑖 , 𝑋𝑖 , 𝑌𝑖 có dạng:
- Nếu 𝑇𝑖 = 1, thay 𝐴𝑋𝑖 với 𝐴𝑋𝑖 ⊕ 𝑌𝑖
- Nếu 𝑇𝑖 = 2, in ra 𝐴𝑋𝑖 ⊕ 𝐴𝑋𝑖 +1 ⊕ … ⊕ 𝐴𝑌𝑖 .
(1 ≤ 𝑋𝑖 ≤ 𝑁, 𝑇𝑖 = 1 → 0 ≤ 𝑌𝑖 < 230 | 𝑇𝑖 = 2 → 1 ≤ 𝑌𝑖 ≤ 𝑁)
Ở đây, a ⊕ b là bitwise XOR của a và b.
INPUT
• Dòng đầu chứa 2 số 𝑁 và 𝑄
• Dòng tiếp theo chứa 𝑁 số nguyên 𝐴𝑖
• 𝑄 dòng tiếp theo, mỗi dòng chứa 3 số nguyên 𝑇𝑖 , 𝑋𝑖 , 𝑌𝑖 miêu tả truy vấn thứ 𝑖
OUTPUT
Với mỗi truy vấn 𝑇𝑖 = 2 in ra kết quả tương ứng.
INPUT OUTPUT
3 4 0
1 2 3 1
2 1 3 2
2 2 3
1 2 3
2 2 3
10 10 1
0 5 3 4 7 0 0 0 1 0 0
1 10 7 5
2 8 9 3
2 3 6 0
2 1 6
2 1 10
1 9 4
1 6 1
1 6 3
1 1 7
2 3 5

20
38.STEZ38
Khi đến ngày trẻ em, bọn trẻ đến nhà Phan và quẩy tung cả nhà lên. Phan rất tức vì rất
nhiều đồ bị mất, cụ thể là dãy số mà Phan yêu thích
May thay, Phan nhớ cách sửa dãy số đó. Ban đầu, anh ta tạo ra một mảng các số nguyên
𝑎[1], 𝑎[2], … 𝑎[𝑛]. Sau đó anh ta thực hiện 𝑚 thao tác. 1 trong trong những thao tác có
thể là:
- Thao tác 1: in 𝑙, 𝑟. Phan viết ra giá trị của tổng 𝑎[𝑙] + 𝑎[𝑙 + 1] + ⋯ + 𝑎[𝑟]
- Thao tác 2: 𝑚𝑜𝑑 𝑙, 𝑟, 𝑥. Phan gán 𝑎[𝑖] = 𝑎[𝑖] 𝑚𝑜𝑑 𝑥 với mỗi 𝑖 ∈ [𝑙, 𝑟]
- Thao tác 3: đặt 𝑘, 𝑥. Phan đặt giá trị của phần tử 𝑎[𝑘] = 𝑥
Giúp Phan hồi phục lại dãy của anh ấy
INPUT
• Dòng đầu chứa 2 số nguyên 𝑛, 𝑚 (1 ≤ 𝑛, 𝑚 ≤ 10^5 ).
• Dòng thứ 2 chứa 𝑛 số nguyên 𝑎[1], 𝑎[2], … , 𝑎[𝑛] (1 ≤ 𝑎 [𝑖] ≤ 109 ) – giá trị ban
đầu của mảng
• Mỗi dòng trong 𝑚 dòng sau bắt đầu với 𝑡 ∈ {1, 2, 3}
○ Nếu 𝑡 = 1, sẽ có 2 số nguyên 𝑙, 𝑟 (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛) tương ứng với thao tác
1
○ Nếu 𝑡 = 2, sẽ có 3 số nguyên 𝑙, 𝑟, 𝑥 (1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛, 1 ≤ 𝑥 ≤ 109 ) tương
ứng với thao tác 2
○ Nếu 𝑡 = 3, sẽ có 2 số nguyên 𝑘, 𝑥 (1 ≤ 𝑘 ≤ 𝑛, 1 ≤ 𝑥 ≤ 109 ) tương ứng
với thao tác 3.
OUTPUT
Với mỗi thao tác 1, in ra trên 1 dòng đáp án tương ứng. Lưu ý đáp án có thể vượt quá giới
hạn của 𝑖𝑛𝑡
INPUT OUTPUT
5 5 8
1 2 3 4 5 5
2 3 5 4
3 3 5
1 2 5
2 1 3 3
1 1 3
10 10 49
6 9 6 7 6 1 10 10 9 5 15
1 3 9 23
2 7 10 9 1
2 5 10 8 9
1 4 7
3 3 7
2 7 9 9
1 2 4
1 6 6
1 5 9
3 1 10

21
39.STEZ39
Sau ngày dài mệt mỏi, Igor quyết định nghỉ ngơi
Anh ta quyết định nuôi một con sên và mua hẳn một bể cá với 1 thân cây trơn trượt ở
giữa và để con sên tên Julia ở trong
Igor nhận ra rằng đôi khi Julia muốn trèo lên thân cây đó như không thể vì quá trơn. Để
giúp chú sên thì anh ta gắn các sợi dây thừng trên thân cây, sợi dây thứ 𝑖 có đầu dưới ở vị
trí 𝑙𝑖 so mới mặt đất và đầu trên ở vị trí 𝑟𝑖 so với mặt đất.
Vì 1 số lý do mà không có sợi dây nào trùng đầu trên cả (𝑟𝑖 𝑝ℎâ𝑛 𝑏𝑖ệ𝑡). Giờ thì Julia có
thể di chuyển trên bất cứ vị trí nào trên thân cây giữa các đoạn dây. Igor tự hào và đôi khi
nghĩ về cách mà chú sên có thể di chuyển. Anh ta có hứng thú với vài câu hỏi sau: ≪Giả
sử con sên đang ở độ cao 𝑥, độ cao cao nhất trên thân cây con sên có thể leo tới là bao
nhiêu nếu độ cao không thể dưới 𝑥 và quá 𝑦?≫. Chú ý rằng con sên chỉ có thể leo sang
thân cây khi đang ở đầu trên của 1 dây, và Igor chỉ quan tâm đến vị trí cao nhất trên
thân cây.
INPUT
• Dòng đầu chứa số nguyên n (1 ≤ 𝑛 ≤ 105 ), độ cao của thân cây.
• Dòng thứ 2 chứa số nguyên 𝑚 (1 ≤ 𝑚 ≤ 105 ) số lượng dây.
• 𝑚 dòng tiếp theo là thông tin về các đoạn dây
○ Dòng thứ 𝑖 gồm 2 số nguyên 𝑙𝑖 và 𝑟𝑖 (1 ≤ 𝑙𝑖 ≤ 𝑟𝑖 ≤ 𝑛) là độ cao của 2
đầu dây thứ 𝑖. Chắc chắn rằng 𝑟𝑖 phân biệt
• Dòng tiếp theo gồm 1 số nguyên 𝑞 (1 ≤ 𝑞 ≤ 105 ) – số lượng câu hỏi.
• 𝑞 dòng tiếp theo, mỗi dòng chứa 2 số nguyên 𝑥, 𝑦 (1 ≤ 𝑥 ≤ 𝑦 ≤ 𝑛) – 𝑥 là độ cao
mà Julia đang ở và không thể thấp hơn), và 𝑦 là độ cao mà Julia không thể vượt
quá.
OUTPUT
In ra đáp án tương ứng với mỗi câu hỏi
INPUT OUTPUT
8 2
4 2
1 2 5
3 4 5
2 5 7
6 7
5
1 2
1 4
1 6
2 7
6 8
10 2
10 7
3 7 3
1 4 3
1 6 2
5 5 2
22
1 1 5
3 9 3
7 8 7
1 2 10
3 3
7 10
10
2 4
1 7
3 4
3 5
2 8
2 5
5 5
3 5
7 7
3 10
Giải thích:

40. STEZ40
An mua một mảng gồm 𝑛 hộp gỗ được đánh dấu từ 0 đến 𝑛 − 1. Với mỗi hộp 𝑖, anh ta
đánh 1 số nguyên có giá trị 𝑏𝑜𝑥𝑖
An muốn thực hiện q truy vấn lên mảng này, Mỗi truy vấn có dạng (𝑙 ≤ 𝑖 ≤ 𝑟):
● 1 𝑙 𝑟 𝑐: Tăng 𝑐 đơn vị với mỗi 𝑏𝑜𝑥𝑖 .
𝑏𝑜𝑥
● 2 𝑙 𝑟 𝑑: Gán 𝑏𝑜𝑥𝑖 = ⌊ 𝑑 𝑖 ⌋.
● 3 𝑙 𝑟: In ra 𝑏𝑜𝑥𝑖 .
● 4 𝑙 𝑟: In ra tổng 𝑏𝑜𝑥𝑖 .
(2 ≤ 𝑑 ≤ 109 , −104 ≤ 𝑐 ≤ 104 , 0 ≤ 𝑙 ≤ 𝑟 < 𝑛)
INPUT
• Dòng đầu chứa 2 số nguyên 𝑛, 𝑞 (1 ≤ 𝑛, 𝑞 ≤ 10^5)
• Dòng 2 chứa 𝑛 số nguyên 𝑏𝑜𝑥𝑖 (−109 ≤ 𝑏𝑜𝑥𝑖 ≤ 109 , 0 ≤ 𝑖 < 𝑛)
• 𝑞 dòng sau, mỗi dòng chứa 1 trong các truy vấn kể trên.

23
OUTPUT
In ra trên mỗi dòng kết quả của truy vấn loại 3 hoặc 4

INPUT OUTPUT
10 10 -2
-5 -4 -3 -2 -1 0 1 2 3 4 -2
1 0 4 1 -2
1 5 9 1 -2
2 0 9 3 0
3 0 9 1
4 0 9 1
3 0 1
4 2 3
3 4 5
4 6 7
3 8 9

24

You might also like