TLEoj Contest #05 - Villa
Hẳn chúng ta ai cũng biết hành trình từ đáy xã hội đi lên của idol tên Đ nào đó. Ngày hôm nay, gia đình của anh ấy - gia đình Villa, đã đón tiếp 1 thành viên mới, đó chính là . Để chào mừng thành viên mới và gắn kết gia đình, Đ quyết định cho cả gia đình thực hiện hành trình đi lên đỉnh xã hội trên một cây có n đỉnh và n–1 cạnh. Đỉnh 1 của cây tượng trưng cho cánh cổng dẫn tới đỉnh xã hội và các đỉnh lá dưới cùng của cây tượng trưng cho ngôi nhà của Mân đàn, Vozer,…. (đứng đầu là ). Cụ thể, trong một đơn vị thời gian, mỗi thành viên của gia đình sẽ đi tới đỉnh cha mà đỉnh họ đang đứng cho tới khi tới được đỉnh 1 và sau đó thoát khỏi cây.
Nhưng con đường lên tới đỉnh xã hội không dễ dàng như vậy, mỗi đỉnh trên cây không thể chứa hai thành viên của gia đình cùng một lúc, vì vậy tổng lãnh tên Đ đã đưa ra một phương án đó chính là: Với mỗi “đáy” mà một thành viên đứng ban đầu, thành viên đó có thể chèn thêm một đỉnh con khác cho đỉnh đó, sau đó chuyển sang đứng ở “đáy” mới này.
Các thành viên của gia đình tuy không muốn bị “ùn tắc giao thông” khi lên đỉnh xã hội nhưng cũng muốn số lần “đáy” mới được thêm vào là ít nhất, hãy giúp họ tính toán nhé.
Input, Output và Subtasks
Input
- Dòng đầu tiên chứa số nguyên dương n\ (n\le 10^5)
- n - 1 dòng tiếp theo chứa hai số nguyên dương u,v\ (1\le u,v\le n) biểu thị có đường đi nối giữa hai đỉnh u và v.
Output
- Một dòng duy nhất gồm số lần kéo đáy ít nhất cần thực hiện
Sample 1
Input
5
1 2
1 3
3 4
3 5
Output
1
Note
- Chúng ta có thể thấy trong lần di chuyển đầu (đơn vị thời gian đầu tiên) thành viên ở đỉnh 2 sẽ di chuyển tới đỉnh 1 còn thành viên ở đỉnh 4 và 5 sẽ gặp ùn tắc ở đỉnh 3. (minh họa cây ở hình ảnh 1)

- Vì vậy, thành viên ở vị trí 5 sẽ kéo dài đáy của họ (mịnh họa cây ở hình ảnh 2). Sau đó cây thỏa mãn với đường đi của mỗi thành viên là:
2\rightarrow 1 -> đỉnh xã hội
4\rightarrow 3\rightarrow 1 -> đỉnh xã hội
6\rightarrow 5\rightarrow 3\rightarrow 1 -> đỉnh xã hội
Có thể thấy trong cùng một đơn vị thời gian không có 2 thành viên nào ở cùng vị trí với nhau.

TLEoj Contest #05 - Tích chính phương
Bạn được cho một tập hợp S gồm các số nguyên dương từ 1 đến n. Nhiệm vụ của bạn là tìm số chính phương lớn nhất là tích của một tập hợp con của tập hợp S.
Input, Output and Scoring
Input
- Số nguyên dương n.
Output
- In ra kết quả sau khi chia lấy dư 1234567891.
Scoring
- Subtask 1 (20\%): 1 \le n \le 20.
- Subtask 2 (80\%): 1 \le n \le 10^5.
Input and Output
Input
6
Output
144
Note
- Ta chọn tập hợp con {1, 2, 3, 4, 6} để có tích là số chính phương lớn nhất.
TLEoj Contest #05 - Hoán đổi K
Cây nhị phân cân bằng bậc n được định nghĩa bao gồm tổng cộng 2^n-1 đỉnh và được đánh số từ 1 đến 2^n-1. Với mọi đỉnh thứ i từ 1 đến 2^{n-1}-1 sẽ có đúng 2 đỉnh con là 2i và 2i+1. Tất cả các đỉnh từ 2^{n-1} đến 2^n-1 không có đỉnh con nào.
Một hôm, weqd muốn thử thách khả năng lập trình của bạn bằng một trò chơi. Ban đầu, weqd có 1 món đồ chơi có dạng cây nhị phân cân bằng bậc n. Cậu ta sẽ đánh các giá trị trên cây, với đỉnh thứ i, cậu ta sẽ đánh giá trị là i. Sau đó, weqd sẽ tiến hành thay đổi giá trị giữa 2 đỉnh bất kì (anh ấy sẽ thực hiện điều đó trong q lần). weqd sẽ yêu cầu bạn tính giá trị hàm f(i)+g(i) với mọi 1\le i\le 2^n-1. Trong đó, hàm f(x) là giá trị nhỏ nhất trong đường đi từ đỉnh 1 tới đỉnh thứ x, còn hàm g(x) là giá trị lớn nhất trong đường đi từ đỉnh 1 tới đỉnh thứ x
Nhiệm vụ của bạn là hãy viết chương trình để hoàn thành thử thách trên.
Input, Output và Subtasks
Input
- Dòng đầu tiên gồm 2 số nguyên dương n,q (1\le n\le 18,0\le q\le 10^5)
- Sau đó là q dòng, mỗi dòng bao gồm 2 số x,y cho biết weqd sẽ hoán đổi 2 đỉnh x,y (1\le x,y\le 2^n-1)
Output
- Xuất ra 2^n-1 giá trị, giá trị thứ i cho biết giá trị của f(i)+g(i). Các giá trị được phân cách nhau bởi dấu cách.
Sample 1
Input
2 2
1 2
2 3
Output
4 5 3
TLEoj Contest #06 - Hiệu hai số
Bạn được cho một dãy số A gồm n phần tử bất kỳ (1\le A_i\le 10^8). Bạn được cho thêm 2 giá trị là l và r, với l=min(A), r=max(A).
Nhiệm vụ của bạn là in ra toàn bộ dãy số A bằng cách hỏi câu lệnh sau: ?\ i\ j (1\le i,j\le n). Sau khi bạn hỏi lệnh thì máy sẽ trả về một giá trị là A_i-A_j.
Bạn được hỏi lệnh này tối đa n-1 lần. Sau đó, bạn bắt buộc phải in ra toàn bộ dãy số A với lệnh !\ A_1\ A_2\ \dots\ A_{n-1}\ A_n.
Hướng dẫn cách giao tiếp với máy chấm
Để câu trả lời của bạn có thể đến được với máy chấm, bạn cần phải flush output của mình ra. Sau đây là cách flush output ở một vài ngôn ngữ phổ biến
- C++:
cout << endl;. - Pascal:
flush(output). - Python:
stdout.flush(). - Java:
System.out.flush().
Để hiểu rõ hơn, bạn có thể đọc blog của codeforces tại đây: https://codeforces.com/blog/entry/45307
Lưu ý: Một số test/submit có thể có verdict Time limit exceed khi cả chương trình của bạn và máy chấm đều cùng muốn nhập input. Lúc này máy chấm và chương trình của bạn đều chờ output của nhau và sẽ hết thời gian.
Lưu ý: Bạn có thể chạy thử chương trình interactive trên máy của chính mình.
Input, Output và Subtasks
Input
- Dòng đầu tiên gồm một số nguyên dương t là số testcase (1\le t\le 100)
- Sau đó là t testcase, mỗi testcase bao gồm 3 giá trị n,l,r (1\le n\le 10^5,1\le l\le r\le 10^8)
- Dữ liệu đảm bảo tổng n trong tất cả testcase không quá 10^5
Interaction: (stdin / stdout)
- Sau khi đọc input, bạn không được hỏi quá n-1 câu hỏi, với mỗi câu hỏi được định dạng như sau:
- ?\ i\ j: Bạn chọn 2 chỉ số i,j, và máy chấm sẽ xuất ra giá trị của A_i-A_j
- Sau một vài lần hỏi, trường hợp bạn đã tìm ra hoán vị, bạn xuất ra đáp án với định dạng như sau:
- !\ A_1\ A_2\ \dots\ A_n: Bạn trả lời dãy số A mà bạn đã tìm thấy. Thao tác này sẽ không tính vào số lần hỏi. Sau hành động này, ta sẽ chuyển qua testcase tiếp theo.
- Trường hợp bạn xuất ra hành động không hợp lệ, số lần hỏi của bạn vượt quá số lần cho phép hay bạn tìm ra kết quả sai, chương trình của bạn sẽ nhận kết quả
Wrong answer. Bạn chỉ được nhận kết quảAcceptednếu bạn xuất ra đúng hoán vị trong tất cả testcase
Sample
Interaction: (stdin / stdout)
| Máy chấm | Chương trình nộp | Giải thích |
|---|---|---|
1 |
Có t=1 testcase | |
2 1 2 |
Trong testcase này, n=2 | |
? 1 2 |
Bạn chọn 2 chỉ số là i=1, j=2 để hỏi | |
-1 |
A_1-A_2=-1 | |
! 1 2 |
Bạn đã tìm thấy kết quả, dãy số A={1,2} và may mắn đúng! |
TLEoj Contest #05 - Ăn ba tô cơm
Ăn ba tô cơm để khỏe
Trường của mondellbit009 mới mở bán trú để cho học sinh ăn và nghỉ trưa tại trường. Là một đứa có nhà ở rất xa, mondellbit009 liền đăng ký ngay. Sau 69 tháng mở bán trú, trường của mondellbit009 đang gặp một vấn đề đau đầu đó là: Học sinh ở đó ăn rất ít, khiến nhà trường bị nghi ngờ là nấu đồ ăn ít + không đảm bảo. Vì thế nhà trường phát động phong trào đó là Ăn ba tô cơm. Nhà trường sẽ trao thưởng cho bạn nếu bạn ăn nhiều hơn hoặc bằng 3 tô cơm với điều kiện để ăn một tô cơm là:
- Ăn cơm không
- Ăn cơm với thịt
- Ăn cơm với canh
- Hoặc là ăn cơm + thịt + canh
Học sinh sẽ tự lấy cho mình a tô cơm, b tô thịt, c tô canh. Hãy kiểm tra xem học sinh đó có đủ điều kiện để nhận thưởng không?
Input, Output và Subtasks
Input
- Dòng đầu tiên nhập t (t \le 10^5) là số lượng testcase.
- t dòng tiếp theo nhập a, b, c (1 \le a \le 10^9, 1 \le b \le 10^9, 1 \le c \le 10^9) tương ứng với số tô cơm, số tô thịt, số tô canh.
Output
- Gồm t dòng, nếu thỏa mãn điều kiện in
YESngược lại inNO.
Subtasks
Không có subtask đâu :)))
Sample 1
Input
3
3 1 2
1 2 1
69 3 2
Output
YES
NO
YES
Note
- Ở testcase thứ nhất, học sinh có thể ăn 2 tô cơm với canh + 1 tô cơm với thịt, nên có thể nhận thưởng.
- Ở testcase thứ hai, học sinh chỉ có thể ăn 1 tô cơm với canh hoặc 1 tô cơm với thịt, nên không thể nhận thưởng.
TLEoj Contest #04 - Tìm hoán vị
Đây là 1 bài tương tác với máy chấm
đang có 1 hoán vị a độ dài n. Nhiệm vụ của bạn là tìm ra hoán vị mà đang có. Mỗi lần bạn được hỏi cung cấp dữ kiện để tìm kiếm bằng cách chọn 2 chỉ số i,j (1\le i,j\le n; i\ne j) và sẽ cho bạn biết giá trị của a_i\ mod\ a_j
Bạn chỉ được hỏi không quá 2n-2 lần. Nhiệm vụ của bạn là tìm ra hoán vị mà đang có.
Hướng dẫn cách giao tiếp với máy chấm
Để câu trả lời của bạn có thể đến được với máy chấm, bạn cần phải flush output của mình ra. Sau đây là cách flush output ở một vài ngôn ngữ phổ biến
- C++:
cout << endl;. - Pascal:
flush(output). - Python:
stdout.flush(). - Java:
System.out.flush().
Để hiểu rõ hơn, bạn có thể đọc blog của codeforces tại đây: https://codeforces.com/blog/entry/45307
Lưu ý: Một số test/submit có thể có verdict Time limit exceed khi cả chương trình của bạn và máy chấm đều cùng muốn nhập input. Lúc này máy chấm và chương trình của bạn đều chờ output của nhau và sẽ hết thời gian.
Lưu ý: Bạn có thể chạy thử chương trình interactive trên máy của chính mình.
Input, Output và Subtasks
Input
- Dòng đầu tiên chứa một số nguyên dương t là số testcase (1\le t\le 10^3)
- Sau đó là t testcase, mỗi testcase gồm duy nhất một số nguyên dương n là kích thước mảng mà đang có (2\le n\le 10^4)
- Dữ liệu đảm bảo tổng n trong tất cả testcase không quá 10^4
Interaction: (stdin / stdout)
- Sau khi đọc input, bạn không được hỏi quá 2n-2 câu hỏi, với mỗi câu hỏi được định dạng như sau:
- ?\ i\ j: Bạn chọn 2 chỉ số i,j, và máy chấm sẽ xuất ra giá trị của a_i\ mod\ a_j
- Sau một vài lần hỏi, trường hợp bạn đã tìm ra hoán vị, bạn xuất ra đáp án với định dạng như sau:
- !\ a_1\ a_2\ \dots\ a_n: Bạn trả lời hoán vị mà bạn đã tìm thấy. Thao tác này sẽ không tính vào số lần hỏi. Sau hành động này, ta sẽ chuyển qua testcase tiếp theo.
- Trường hợp bạn xuất ra hành động không hợp lệ, số lần hỏi của bạn vượt quá số lần cho phép hay bạn tìm ra kết quả sai, chương trình của bạn sẽ nhận kết quả
Wrong answer. Bạn chỉ được nhận kết quảAcceptednếu bạn xuất ra đúng hoán vị trong tất cả testcase
Sample
Interaction: (stdin / stdout)
| Máy chấm | Chương trình nộp | Giải thích |
|---|---|---|
2 |
Có t=2 testcase | |
2 |
Trong testcase này, n=2 | |
? 1 2 |
Bạn chọn 2 chỉ số là i=1, j=2 để hỏi | |
1 |
a_1\ mod\ a_2=1 | |
! 1 2 |
Bạn đã tìm thấy kết quả, hoán vị a={1,2} và may mắn đúng! Ta chuyển sang testcase tiếp theo | |
3 |
Trong testcase này, n=3 | |
? 1 2 |
Bạn chọn 2 chỉ số là i=1, j=2 để hỏi | |
0 |
a_1\ mod\ a_2=0 | |
? 1 3 |
Bạn chọn 2 chỉ số là i=1, j=3 để hỏi | |
1 |
a_1\ mod\ a_3=1 | |
? 3 2 |
Bạn chọn 2 chỉ số là i=3, j=2 để hỏi | |
0 |
a_3\ mod\ a_2=0 | |
! 3 1 2 |
Bạn đã tìm thấy kết quả, hoán vị a={3,1,2} và may mắn đúng! |
TLEoj Contest #04 - Dãy bit
Bạn được biết m mô tả về dãy bit. Mỗi mô tả có thể thuộc 1 trong 2 loại sau:
- 1\ l\ r: Dãy bit con [l,r] chứa ít nhất 1 bit 0.
- 2\ l\ r: Dãy bit con [l,r] chứa ít nhất 1 bit 1.
Nhiệm vụ của bạn là đếm số lượng dãy bit có độ dài n sao cho nó khớp với mô tả trên.
Input, Output và Subtasks
Input
- Dòng đầu tiên chứa 2 số n,m\ (1\le n\le 10^{18};0\le m\le 10^5).
- Tiếp đó là m dòng, mỗi dòng là một mô tả thuộc 1 trong 2 loại trên (1 \le l \le r \le n).
Output
- In ra kết quả sau khi chia lấy dư cho 1234567891.
Scoring
- Subtask 1 (10\%): m = 0.
- Subtask 2 (15\%): 1 \le n \le 18; 0 \le m \le 36.
- Subtask 3 (20\%): 1 \le n \le 10^4.
- Subtask 4 (25\%): 1 \le m \le 10^4.
- Subtask 5 (30\%): Không giới hạn gì thêm.
Example
Input
3 2
1 1 2
2 2 3
Output
4
Note
- Có 4 dãy bit thỏa mãn là
001,010,011,101.
TLEoj Contest #04 - Tích bằng 1
Cho dãy số nguyên dương n phần tử a_1,a_2,\ldots,a_n. Tìm số lượng bộ k chỉ số i_1,i_2,\ldots, i_k thỏa mãn 1\le i_1<i_2<\ldots <i_k\le n, sao cho a_{i_1}\times a_{i_2}\times \ldots \times a_{i_k}=1.
Input, Output và Subtasks
Input
- Dòng đầu tiên chứa hai số nguyên dương n và k (1\le k\le n\le 10^6);
- Dòng thứ hai chứa n số nguyên dương a_1,a_2,\ldots,a_n (a_i \le 10^9).
Output
Ghi ra số lượng bộ k chỉ số thỏa mãn, sau khi modulo cho 10^9+7.
Scoring
- Subtask 1 (2\%): n\le 10^6,k=1
- Subtask 2 (4\%): n\le 5000,k=2
- Subtask 3 (4\%): n\le 10^6,k=2
- Subtask 4 (5\%): n\le 500,k=3
- Subtask 5 (5\%): n\le 100,k=4
- Subtask 6 (20\%): n\le 100,k\le 5
- Subtask 7 (60\%): Không có ràng buộc gì thêm
Sample
Input
5 4
1 1 1 1 1
Output
5
TLEoj Contest #04 - Thao tác trên xâu
ngvanminh_ có 1 xâu s có độ dài n chỉ gồm các chữ cái thường. Cậu thực hiện q thao tác, thao tác thứ i chứa số nguyên x_i và kí tự c_i: ngvanminh_ sẽ thay đổi kí tự ở vị trí thứ x_i thành c_i.
Nhiệm vụ của bạn là đếm số lượng xâu khác nhau đã được tạo ra sau q thao tác (tính cả xâu ban đầu).
Input, Output và Subtasks
Input
- Dòng thứ nhất chứa 2 số nguyên dương n,q\ (1\le n,q\le 10^5) - độ dài của xâu và số lượng thao tác.
- Dòng tiếp theo chứa xâu s có độ dài n chỉ gồm các chữ cái thường.
- Sau đó là q truy vấn, mỗi truy vấn chứa số nguyên x_i và kí tự c_i\ (1\le x_i\le n).
Output
In ra số lượng xâu khác nhau đã được tạo ra sau q thao tác.
Scoring
- Subtask 1 (30\%): n\le 20
- Subtask 2 (70\%): Không có ràng buộc gì thêm
Sample
Input
3 7
abc
1 n
2 v
3 m
1 a
2 b
3 c
2 b
Output
6
Note
Các xâu đã tạo được là abc, nbc, nvc, nvm, avm, abm, abc, abc. Trong đó có 6 xâu khác nhau là abc, nbc, nvc, nvm, avm, abm
TLEoj Contest #04 - Cặp số nguyên tố
Never gonna give you up...
Spoiler

Vào 1 ngày đẹp trời và lúc Astley đang vội làm toán để anh ấy mai có thể kịp biểu diễn bài hát Never Gonna Give You Up, anh ấy đã gặp trúng 1 bài toán hơi căng, nội dung của bài toán là:
Cho một số nguyên chẵn x. Nhiệm vụ của bạn là kiểm tra xem có thể biểu diễn x dưới dạng tổng của 2 số nguyên tố p_a và p_b hay không.
Input, Output và Subtasks
Input
- Dòng đầu chứa số nguyên dương t là số testcase (1\le t\le 10^5)
- Sau đó là t dòng, mỗi dòng chứa số nguyên n chẵn có giá trị tuyệt đối không quá 10^{18}
Output
Với mỗi testcase, in ra kết quả tương ứng trong một dòng. Nếu nó thỏa mãn với giả thuyết thì in ra 1, nếu không in ra 0.
Sample
Input
3
2
4
6
Output
0
1
1
Note
Trong testcase 1, với n=2 không thể biểu diễn dưới dạng tổng của 2 số nguyên tố
Trong testcase 2, với n=4 có thể biểu diễn thành 4=2+2
Trong testcase 3, với n=6 có thể biểu diễn thành 6=3+3
TLEoj Contest #04 - Sqrt++
Sqrt, sqrt, sqrt!
Ban đầu bạn có một số x=1. Mỗi lần bạn tăng x lên \left \lfloor \sqrt x \right \rfloor. Trong đó \left \lfloor x \right \rfloor là phép làm tròn xuống. Ví dụ: \left \lfloor 5.2 \right \rfloor=5,\left \lfloor 6.9 \right \rfloor=6
Nhiệm vụ của bạn là kiểm tra xem sau k bước, giá trị x bằng bao nhiêu.
Input, Output và Subtasks
Input
- Dòng đầu chứa số nguyên dương t là số testcase (1\le t\le 10^5);
- t dòng tiếp theo, mỗi dòng chứa một số nguyên dương k (1\le k\le 10^9)
Output
Xuất ra t dòng, mỗi dòng xuất ra kết quả tương ứng trên một dòng
Scoring
- Subtask 1 (50\%): k\le 10^6
- Subtask 2 (50\%): Không có ràng buộc gì thêm
Sample
Input
10
1
2
3
4
5
6
7
8
9
10
Output
2
3
4
6
8
10
13
16
20
24
TLEoj Contest #04 - I hate sqrt
Lời thách đấu của Kaito the Kid tới Edogawa
Ta đã bắt cóc bạn gái của ngươi là Ran (có hình ảnh minh họa)
Image

8 giờ tối nay, vào đêm trăng (tròn hay không không quan trọng), hãy đến quảng trường TLE. Chúng ta hãy thách đấu với nhau trên quảng trường đó. Nếu ngươi thắng, ta sẽ thả bạn gái của ngươi ra và sẽ cho ngươi 200k để đi chơi với người yêu. Chúng ta cùng thách đấu nào!
Kaito the Kid 
Đó chính là lời thách đấu của Kaito the Kid tới Edogawa . Edogawa sau khi biết được tin này đã rất hoảng loạn, cậu ta đã chuẩn bị món quà nhỏ nhỏ xinh xinh nhân ngày kỷ niệm hơn 9 tháng yêu nhau cùng với Ran rồi. Vậy mà lại xảy ra cơ sự như thế này. Nhưng đây biết đâu lại là cơ hội, vì nếu cậu ta cứu được Ran thì sẽ có cơ hội tỏ tình với cô ấy. Thế là vào đúng lúc 8 giờ tối hôm ấy, cậu lướt ván trượt nhanh như bay, và đã tới được nơi mà Kaito the Kid thách đấu. Ở đấy đã có rất nhiều người theo dõi, trên ti vi cũng live trận thách đấu của cậu ta. Từ trước giờ, cậu chưa bao giờ gặp trận thách đấu nào căng thẳng đến như thế này, nhưng mà vì Ran, cậu không thể dừng lại được. Trận đấu bắt đầu!
Kaito the Kid quyết định thách đấu với Edogawa bằng cách là mỗi người sẽ ra 1 bài toán cho đối phương giải. Edogawa ra bài trước, nhưng mà Kaito the Kid rất nhanh đã giải được chỉ trong vòng 27022009\ ms (ăn may :D). Tới luợt Kaito the Kid ra bài. Ra bài xong, sau một thời gian, Edogawa đã nghĩ ra thuật, nhưng mà... "Chắc chưa?" - một câu hỏi đơn giản đã làm Edogawa phải toát mồ hôi hột. Vì thế xin nhờ các bạn hãy cùng Edogawa giải bài toán này nhé! Nếu bạn giải được bài toán này cho Edogawa thì sẽ được tặng vé xem phim Tàu ngầm sắt màu đen mới nhất đang chiếu trên rạp đó! Bài toán như sau:
Ta gọi một dãy số a được gọi là dãy đáng ghét khi có một giá trị k không âm thỏa mãn cả k và \sqrt k đều xuất hiện trong dãy số đó.
Bạn được cho một dãy số a gồm n phần tử. Nhiệm vụ của bạn là thực hiện q truy vấn thuộc 1 trong 2 loại như sau:
- 1\ i\ k: Đặt a_i=k
- 2\ l\ r: Kiểm tra xem dãy số a_l,a_{l+1},\dots,a_r có phải là dãy số đáng ghét không. Nếu có, nhiệm vụ của bạn là tìm một cặp số l\le u\le v\le r thỏa mãn a_u=\sqrt {a_v} hoặc a_v=\sqrt {a_u}. Ưu tiên xuất giá trị u nhỏ nhất, sau đó tới v nhỏ nhất
Lưu ý là các truy vấn loại 1 sẽ độc lập với nhau, hay nói cách khác, truy vấn loại 1 thứ i-1 sẽ hết hiệu lực ngay trước khi thực hiện truy vấn loại 1 thứ i
Input, Output và Subtasks
Input
- Dòng đầu chứa hai số nguyên dương n,q\ (1\le n,q\le 5\times 10^5);
- Dòng tiếp theo chứa n giá trị a_1,a_2,\dots,a_n\ (1\le a_i\le 10^9)
- Sau đó là q dòng, mỗi dòng chứa 1 trong 2 truy vấn được định dạng như trên
Output
Với mỗi truy vấn loại 2, xuất ra kết quả trên một dòng. Trường hợp dãy số a_l,a_{l+1},\dots,a_r không phải là dãy số đáng ghét, hãy xuất -1, ngược lại, hãy xuất ra 2 số u,v thỏa mãn theo yêu cầu.
Scoring
- Subtask 1 (20\%): n,q\le 500
- Subtask 2 (20\%): n,q\le 5000
- Subtask 3 (20\%): Không có truy vấn loại 1
- Subtask 4 (20\%): n,q\le 10^5
- Subtask 5 (20\%): Không có ràng buộc gì thêm
Sample
Input
5 6
3 2 4 6 9
2 1 5
2 2 4
1 3 36
2 2 4
1 5 10
2 1 5
Output
1 5
2 3
3 4
2 3
Note
Dãy a ban đầu: 3,2,4,6,9
Trong truy vấn 1, cặp số thỏa mãn là (1,5) vì 3=\sqrt 9
Trong truy vấn 2, cặp số thỏa mãn là (2,3) vì 2=\sqrt 4
Trong truy vấn 3, dãy số a được đặt lại thành 3,2,36,6,9
Trong truy vấn 4, cặp số thỏa mãn là (3,4) vì 6=\sqrt {36}
Trong truy vấn 5, dãy số a được đặt lại thành 3,2,4,6,10
Trong truy vấn 6, cặp số thỏa mãn là (2,3) vì 2=\sqrt 4
TLEoj Contest #04 - A sussy problem
There are some imposustor among sus
Among sus là một trò chơi rất thú vị mà bạn có thể chơi với bạn bè. Về cơ bản thì trò chơi này cũng không khác werewolf là mấy. Các bạn sẽ ở trong 1 con tàu và sẽ có một vài người là imposustor - kẻ giả mạo sẽ tìm mọi cách để sát hại người khác hay phá hoại, crewmate - người thường sẽ phải hoàn thành nhiệm vụ và tìm ra imposustor trong quá trình sửa chữa con tàu. Crewmate sẽ chiến thắng nếu hoàn thành hết nhiệm vụ hoặc tìm ra hết imposustor, còn imposustor sẽ thắng khi số imposustor ít hơn hoặc bằng so với số crewmate hay là họ phá hủy con tàu thành công.
Trong thời gian nghỉ hè, vì đã quá chán với những trò chơi như Free Fire, Liên Quân Mobile, Osu, Geometry Dash, ... nên cậu quyết định tìm một trò chơi mới đủ thú vị và có thể chơi cùng bạn bè. Ngày đó cũng như ngày thường, cậu vào Google Play lướt tìm trò chơi và đã tìm thấy tựa game Among sus. Sau khi nghiên cứu và coi những video ~~của mấy ông Ấn Độ~~ chơi trên youtube thì cậu đã cảm thấy trò này rất thú vị. Thế là cậu đã dựa vào quan hệ bạn bè gần xa, bà con cuối phố. Và cậu đã rủ được n-1 người khác cùng chơi trò này, cộng thêm cậu nữa thì tổng cộng n người.
Sau khi chơi với những người bạn của cậu được một thời gian, bỗng nảy ra một bài toán mới. Nhưng sau khi suy nghĩ xong, vì quá lười + cậu đã nghiện game Among sus rồi nên cậu đành nhường lại cho các bạn. Bài toán như sau:
Giả sử các bạn chơi trò chơi này trên bàn gồm n người. Người thứ i\ (1\le i\le n) sẽ ở cạnh người i-1 và người i+1 (người thứ nhất chỉ ở cạnh người thứ hai và người thứ n chỉ ở cạnh người thứ n-1). Mỗi người trong trò chơi này sẽ được cấp vai trò cho mình, vai trò của người thứ i sẽ là a_i (0\le a_i\le 1, a_i=0 tức là vai trò của người đó là crewmate, a_i=1 tức là vai trò của người đó là imposustor). Imposustor sau khi nhận vai trò sẽ chọn 1 trong 2 người kề bên là crewmate và sát hại người đó. Hai imposustor không thể sát hại cùng 1 crewmate, imposustor này không thể sát hại imposustor kia.
định nghĩa một trò chơi được cho là gay cấn khi với mỗi imposustor, họ đều có thể tìm được 1 crewmate để sát hại. Ví dụ:
- Trò chơi
0là trò chơi gay cấn vì không có imposustor - Trò chơi
010là trò chơi gay cấn vì người thứ hai là imposustor có thể chọn người thứ nhất hoặc thứ ba để sát hại - Trò chơi
0110là trò chơi gay cấn vì người thứ hai có thể chọn người thứ nhất và người thứ ba có thể chọn người thứ tư để sát hại - Trò chơi
01110không là trò chơi gay cấn vì người thứ ba không thể chọn được crewmate có thể sát hại - Trò chơi
101không là trò chơi gay cấn vì chỉ có 1 crewmate mà có tận 2 imposustor
đang thắc mắc với n người thì sẽ có thể tạo ra bao nhiêu trò chơi gay cấn khác nhau. Hai trò chơi a và b được cho là khác nhau khi có tối thiểu một giá trị i thỏa mãn a_i\ne b_i. Vì kết quả có thể rất lớn nên bạn hãy xuất kết quả sau khi mod\ 998244353
Input, Output và Subtasks
Input
- Dòng đầu chứa một số nguyên dương t là số testcase (1\le t\le 10^5);
- Sau đó là t dòng, mỗi dòng chứa một số nguyên dương n\ (1\le n\le 10^{18})
Output
Gồm t dòng, mỗi dòng chứa một số nguyên là kết quả của bài toán sau khi mod\ 998244353.
Scoring
- Subtask 1 (5\%): n\le 12
- Subtask 2 (5\%): n\le 20
- Subtask 3 (20\%): n\le 1000
- Subtask 4 (20\%): n\le 10^6
- Subtask 5 (20\%): n\le 5\times 10^7
- Subtask 6 (30\%): n\le 10^{18}
Sample
Input
5
1
2
3
4
5
Output
1
3
4
9
14
Note
Trong ví dụ thứ nhất, chỉ có 1 trò chơi thỏa mãn là 0
Trong ví dụ thứ hai, có 3 trò chơi thỏa mãn là 00, 01, 10
Trong ví dụ thứ ba, có 4 trò chơi thỏa mãn là 000, 001, 010, 100
Trong ví dụ thứ tư, có 9 trò chơi thỏa mãn là 0000, 0001, 0010, 0100, 1000, 0101, 1010, 1001, 0110
Trong ví dụ cuối cùng, có 14 trò chơi thỏa mãn là 00000, 00001, 00010, 00100, 00101, 00110, 01000, 01001, 01010, 01100, 10000, 10001, 10010, 10100