Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

root

Tổng dương

100 điểm

Viết chương trình nhập từ bàn phím một dãy \(a\) gồm \(n\) số nguyên \(a_1, a_2, a_3, \dots, a_n\). Hãy tính và in ra tổng của tất cả các phần tử dương trong mảng.

Input

  • Dòng đầu tiên là số nguyên dương \(n\) - độ dài của dãy \(a\). \((1 \leq n \leq 100)\).
  • Dòng thứ hai là \(n\) số nguyên \(a_1, a_2, a_3, \dots, a_n\) - mỗi số cách nhau một dấu cách \((|a_i| \leq 100)\).

Output

Một dòng duy nhất chứa tổng của các phần tử dương trong mảng.

Example

Test 1

Input
5
-3 2 1 -3 5
Output
8

root

Kiểm tra dãy ngoặc đúng

100 điểm

Trong hệ thống máy tính lượng tử của tương lai, dữ liệu được mã hóa dưới dạng các chuỗi ký tự đặc biệt, chủ yếu sử dụng các ký hiệu ngoặc đơn. Một chuỗi được coi là Hợp lệ (Valid) nếu nó thỏa mãn các quy tắc cân bằng nghiêm ngặt.

Một Dãy Ngoặc Đúng (Correct Bracket Sequence - CBS) hay còn gọi là Dãy Ngoặc Hợp Lệ, được định nghĩa đệ quy như sau:

  • Chuỗi rỗng ("") là một Dãy Ngoặc Đúng.
  • Nếu \(S\) là một Dãy Ngoặc Đúng, thì chuỗi \((\text{S})\) cũng là một Dãy Ngoặc Đúng.
  • Nếu \(S\) và \(T\) đều là Dãy Ngoặc Đúng, thì chuỗi \(ST\) (nối \(S\) và \(T\)) cũng là một Dãy Ngoặc Đúng.
  • Mọi Dãy Ngoặc Đúng chỉ có thể được xây dựng từ các quy tắc trên.

Ví dụ: ()(), (()), "" là các Dãy Ngoặc Đúng; nhưng )(, ((), )(() thì không.

Bạn được giao một chuỗi \(S\) chỉ chứa các ký tự ngoặc đơn '(' và ')' có độ dài \(N\). Nhiệm vụ của bạn là kiểm tra xem chuỗi \(S\) có phải là một Dãy Ngoặc Đúng hay không.

Input

  • Dòng đầu tiên chứa số nguyên \(N\) (\(1 \le N \le 10^6\)) --- độ dài của chuỗi.
  • Dòng thứ hai chứa chuỗi \(S\) có độ dài \(N\), chỉ bao gồm các ký tự '(' và ')'.

Output

In ra YES nếu chuỗi \(S\) là một Dãy Ngoặc Đúng. Ngược lại, in ra NO.

Example

Test 1

Input
2
()
Output
YES

Test 2

Input
6
(())()
Output
YES

Test 3

Input
5
()(((
Output
NO

Test 4

Input
6
(())))
Output
NO

root

Tô màu dải lụa

100 điểm

Tại một ngôi làng cổ nổi tiếng với nghề thủ công truyền thống, lễ hội mùa xuân đang đến gần. Theo phong tục, mỗi gia đình sẽ treo một dải lụa dài trước cửa nhà như biểu tượng của may mắn và thịnh vượng.

Gia đình của Mitsuha cũng vậy, họ sẽ tự tô màu một dải lụa rồi treo trước nhà. Và năm nay, Mitsuha được giao nhiệm vụ lên kế hoạch trang trí dải lụa đó.

Khi ta trải thẳng dải lụa, nó như một đoạn thẳng có \(N\) ô, và ban đầu có một số ô đã được vẽ sẵn họa tiết. Những ô còn lại đang có màu \(0\).

Quy trình tô diễn ra như sau:

  • Mitsuha chọn một cây bút có mã màu từ \(1\) đến \(10^{18}\).
  • Bước tiếp theo, cô sẽ chọn một trong \(N\) ô, và tại ô đó chưa được tô màu và cũng không chứa họa tiết. Sau đó cô có một trong \(2\) lựa chọn sau: \begin itemize
  • Cô vẽ hoạ tiết lên ô đó.
  • Cô bắt đầu tô từ ô được chọn, sau đó kéo một đường sang trái cho đến khi cô gặp một ô có họa tiết hoặc đã được tô màu sẵn hoặc ra khỏi dải lụa. Những ô vừa tô sẽ mang màu \(i\) là mã của cây bút màu cô chọn.

\end itemize

  • Quy trình tô này có thể kết thúc tại bất cừ thời điểm nào.

\begincenter

\smallVí dụ khi Mitsuha đặt bút màu đỏ tại ô \(5\), khi đó cô ấy sẽ kéo màu sang trái đến ô \(3\) - là ô có họa tiết. (X là các ô có họa tiết)
\endcenter
Lưu ý trong quy trình trên, một mã màu chỉ được chọn nhiều nhất một lần.

Mitsuha muốn được biết có bao nhiêu cách tô màu khác nhau cho dải lụa trên. \(2\) cách được gọi là khác nhau khi không tồn tại cách đánh số lại màu để tạo ra dải màu tương tự. Lưu ý, màu của các họa tiết không phân biệt.

Ví dụ xét \(2\) dải màu: \([3, 3, 1, 0]\) và \([2, 2, 3, 0]\), hai dãy trên là tương đương vì ta có cách đánh số \(3\)->\(2\), \(1\)->\(3\) để từ dãy \(1\) ta thu được dãy \(2\).

Chưa kết thúc ở đó, có \(Q\) truy vấn làm thay đổi trạng thái của một ô trong dải. Cụ thể mỗi truy vấn là \([L, R]\) các ô có chỉ số thuộc đoạn này nếu đang có họa tiết thì trở nên không có họa tiết, và ngược lại.

Được biết dải lụa ban đầu không có màu và không có họa tiết. Hãy giúp Mitsuha tìm cách giải bài toán này nhé.

Input

  • Dòng đầu tiên chứa hai số nguyên dương \(N\), \(Q\) \((1 \leq N \leq 10^{18},\ 1 \leq Q \leq 10^5)\) --- số lượng ô trong dải và số lần cập nhật.
  • Mỗi dòng trong \(Q\) dòng tiếp theo chứa hai số nguyên dương \(L\) và \(R\) \((1 \leq L, R \leq N)\) --- mô tả đoạn cần cập nhật.

Output

  • In ra \(Q\) dòng, dòng thứ \(i\) chứa một số nguyên --- phần dư khi chia số cách tô hợp lệ cho \(10^9 + 7\).

Example

Test 1

Input
1 2
1 1
1 1
Output
1
3
Note

Giải thích cho test đầu tiên: Xem ô mang màu -1 nếu nó chứa họa tiết.
Ban đầu dãy là [0], sau truy vấn \(1\) thì dãy là [-1] (có 1 cách). Sau truy vấn \(2\), dãy là [0] khi đó có \(3\) cách \([0], [1], [-1]\).

Test 2

Input
3 2
2 2
1 3
Output
9
3

Test 3

Input
100 3
10 20
15 58
1 15
Output
318045953
998064805
390938541

Scoring

\begintabular|c|c|l|
\hline
Subtask & Điểm & Ràng buộc

\hline
1 & 30 & \(N, Q \leq 1000\)

2 & 30 & \(N \leq 10^5\)

3 & 40 & Không có ràng buộc bổ sung

\hline
\endtabular

root

Xâu Palindrome

100 điểm

Xâu palindrome hay còn gọi là xâu gương, gọi vậy bởi vì khi viết ngược lại xâu thì nó vẫn là chính nó.

Xâu con là xâu nhận được khi xóa một vài kí tự nào đó trong xâu gốc.

Cho trước một xâu chỉ gồm kí tự latin in thường. Kiểm tra xem xâu đó có chứa một xâu con đối xứng có độ dài \(k\) hay không. Nếu có, in ra xâu đó, nếu không có, in ra xâu con đối xứng có độ dài lớn nhất.

Nếu có nhiều xâu thỏa mãn, bạn chỉ cần in đáp án bất kì.

Input

Gồm một xâu kí tự latin in thường có độ dài \(n\) \((n <= 5.10^4)\).

Dòng thứ hai là số nguyên \(k\) \((k <= 100)\).

Output

Xâu thỏa mãn đề bài.

Example

Test 1

Input
bbbabcbbb
7
Output
bbbbbbb

Scoring

\(30\%\) số test \(n <= 20\).

\(20\%\) số test \(n <= 100\).

\(20\%\) số test \(n <= 1000\).

\(30\%\) số test còn lại \(n <= 5.10^4\).

Xem thêm