Max - Min của đoạn

algorit, bin9638

algorit là một nhà toán học đại tài, người có chỉ số iq cao nhất nhân loại nếu đếm ngược. Đặc biệt anh rất thích thú với những thứ to và nhỏ, các con số không phải là ngoại lệ. Bởi vậy hôm nay algorit đang thắc mắc một bài toán như sau :

Bạn được cung cấp một dãy số gồm n số nguyên A_1,A_2,...,A_n.

Nhiệm vụ của bạn là đếm số lượng đoạn con có max - min = k. Ở đây maxmin là giá trị lớn nhất và giá trị nhỏ nhất của đoạn con đó.

algorit suy nghĩ bài toán này đến mức hói cả đầu mà vẫn chưa nghĩ ra, các bạn hãy giúp algorit nhé !

  • Input
  • Dòng đầu tiên gồm 2 số nguyên n,k(0 \le k \le 10^9).
  • Dòng thứ 2 gồm n số nguyên A_1,A_2,A_3,...,A_n(-10^9 \le A_i \le 10^9).
  • Output
  • Gồm một số nguyên duy nhất là số lượng đoạn con thỏa mãn.

  • SampleInput:

    5 2
    1 2 1 3 3```
    * **SampleOutput**:
    

    6```

  • Ràng buộc :
  • 40% số điểm tương ứng với : n \le 10^3.
  • 30% số điểm tương ứng với : n \le 10^5.
  • 30% số điểm tương ứng với : n \le 5 * 10^5.

[Variants] An interesting counting problem related to square product task B

SPyofgame, leanhduy123

Statement

Given q queries, you must find answer for each query.

For each query, you are given an positive integer n, k\ (1 \leq k \leq n \leq 10^{13}).

Count the number of arrays a[] of size k that satisfies:

  • 1 \leq a_1 < a_2 < \dots < a_k \leq n
  • a_i \times a_{i+1} is a perfect square \forall 1 \leq i < n

Since the result can be large, output it under modulo 977555333311111.


Input Data:

The first line contains a single integer \lambda is the number of this subtask.

The second line contains a positive integer q.

The next q lines, the pth query will contain 2 positive integers k, n.


Output Data:

In the p-th line, output a single number is the answer for query (n_p, k_p) under modulo 977555333311111.


Constraints:

Subtask 1: 10.00% tests \lambda = 1 for 1 \leq q \leq 100.000 queries of 1 \leq k \leq \log_2(n) \leq n \leq \large \frac{10^{11}}{q}

Subtask 2: 10.00% tests \lambda = 2 for 1 \leq q \leq 100 queries of 1 \leq k \leq n \leq 100.

Subtask 3: 10.00% tests \lambda = 3 for 1 \leq q \leq 10 queries of 1 \leq k \approx \sqrt{n} \leq n \leq 10^{10}

Subtask 4: 10.00% tests \lambda = 4 for 1 \leq q \leq 10 queries of 1 \leq k \approx \sqrt[3]{n} \leq n \leq 10^{10}

Subtask 5: 10.00% tests \lambda = 5 for 1 \leq q \leq 100 queries of 1 \leq k \leq n \leq 2^{22} and k, n are power of two.

Subtask 6: 10.00% tests \lambda = 6 for 1 \leq q \leq 1000 queries of 1 \leq k \approx \sqrt{n} \leq n \leq 10^{7}

Subtask 7: 10.00% tests \lambda = 7 for 1 \leq q \leq 1000 queries of 1 \leq k \approx \sqrt[3]{n} \leq n \leq 10^{7}

Subtask 8: 10.00% tests \lambda = 8 for 1 \leq q \leq 10.000 queries of 1 \leq k \approx \sqrt{n} \leq n \leq 10^{4}

Subtask 9: 10.00% tests \lambda = 9 for 1 \leq q \leq 10.000 queries of 1 \leq k \approx \sqrt[3]{n} \leq n \leq 10^{4}

Subtask 10: 10.00% tests \lambda = 10 for q = 1 query of 1 \leq k \leq n \leq 10^{13}

Intended solution: O(\sqrt{n} \log \log \sqrt{n}) per query.


Input 1:

10
1
2 1

Output 1:

2

Explanation 1:

There are 2 satisfied arrays {1}, {2}.


Input 2:

2
3
10 2
25 2
27 3

Output 2:

4
16
12

Explanation 2:

In the first query, there are 4 satisfied arrays: {1, 4}, {1, 9}, {2, 8}, {4, 9}.

In the second query, there are 16 satisfied arrays: {1, 4}, {1, 9}, {1, 16}, {1, 25}, {2, 8}, {2, 18}, {3, 12}, {4, 9}, {4, 16}, {4, 25}, {5, 20}, {6, 24}, {8, 18}, {9, 16}, {9, 25}, {16, 25}.

In the third query, there are 12 satisfied arrays: {1, 4, 9}, {1, 4, 16}, {1, 4, 25}, {1, 9, 16}, {1, 9, 25}, {1, 16, 25}, {2, 8, 18}, {3, 12, 27}, {4, 9, 16}, {4, 9, 25}, {4, 16, 25}, {9, 16, 25}.


Input 3:

1
10
123456789 1
234567890 2
345678901 3
456789012 4
567890123 5
678901234 6
789012345 7
890123456 8
901234567 9
12345678 10

Output 3:

123456789
1273061974
2324814700137
497809922458658
162321859768410
154368725290449
443251450189935
281974354563468
117720773712544
148331601579738

This problem was pectifically made for the project [Variants] An interesting counting problem related to square product.

CSES - Array Division | Chia mảng

tan, Flower_On_Stone, lehieuvts

Bạn được cho một mảng chứa n số nguyên dương.

Nhiệm vụ của bạn là chia mảng thành k đoạn con sao cho tổng lớn nhất trong các đoạn con nhỏ nhất có thể.

Input

  • Dòng đầu vào đầu tiên chứa hai số nguyên nk: kích thước của mảng và số lượng đoạn con trong cách chia.
  • Dòng tiếp theo chứa n số nguyên x_1,x_2,\ldots,x_n: nội dung của mảng.

Output

  • In một số nguyên: tổng lớn nhất của một đoạn con trong cách chia tối ưu.

Constraints

  • 1 \leq n \leq 2 \cdot 10 ^ 5
  • 1 \leq k \leq n
  • 1 \leq x_i \leq 10 ^ 9

Example

Sample input

5 3
2 4 7 3 5

Sample output

8

Note

Một cách chia tối ưu là [2,4],[7],[3,5] trong đó tổng của các đoạn con là 6,7,8. Tổng lớn nhất là tổng cuối cùng 8.

Chọn cặp (THT C1 & C2 Vòng KVMN 2022)

Flower_On_Stone

Cho dãy số nguyên A = (a_1, a_2, ..., a_n). Với hai số nguyên dương l, r(1 \leq l \leq r \leq n), gọi trọng số của cặp (l, r) là tổng giá trị của các phần tử liên tiếp từ l đến r của dãy A.

Yêu cầu: Cho dãy A và số nguyên k, hãy chọn ra k cặp (l_1, r_1), (l_2, r_2), ..., (l_k, r_k) thõa mãn:

  • 1 \leq l_i \leq r_i \leq n
  • Các cặp này đôi một khác nhau
  • X \leq r_i - l_i + 1
  • Tổng trọng số của k cặp đã chọn là lớn nhất

Input

  • Dòng đầu chứa ba số nguyên dương n, k, X
  • Dòng thứ hai chứa n số nguyên a_i (|a_i| \leq 10^5)

Output

  • Ghi ra một số nguyên duy nhất là tổng trọng số lớn nhất tìm được.

Scoring

  • 10% số điểm có n \leq 100; k \leq 1000
  • 15% số điểm có n \leq 1000; k \leq 10^5
  • 20% số điểm có n \leq 10^4; k \leq 10^4
  • 20% số điểm có n, k \leq 5 \cdot 10^4
  • 20% số điểm có n, k \leq 3 \cdot 10^5
  • 15% số điểm có n \leq 3 \cdot 10^5; k \leq 10^7.

Example

Sample input *

4 4 2
3 2 -6 8

*
Sample output **
18

CSES - Nearest Smaller Values | Giá trị nhỏ hơn gần nhất

Flower_On_Stone, Elektrikar

Cho một mảng gồm n số nguyên, nhiệm vụ của bạn là với mỗi vị trí của mảng, tìm vị trí gần nhất bên trái của nó mà có giá trị nhỏ hơn.

Input

  • Dòng đầu vào đầu tiên có một số nguyên n: kích thước của mảng.
  • Dòng thứ hai có n số nguyên x_1,x_2,\ldots,x_n: các giá trị của mảng.

Output

  • In n số nguyên: vị trí gần nhất nhỏ hơn cho mỗi vị trí trong mảng. Nếu không có, in 0.

Constraints

  • 1 \leq n \leq 2 \cdot 10 ^ 5
  • 1 \leq x_i \leq 10 ^ 9

Example

Sample input

8
2 5 1 4 8 3 2 5

Sample output

0 1 0 3 4 3 3 7

Táo quân ngoại truyện(Ep.3 bản dễ)

huyhau6a2

Hôm nay, các táo đang chuẩn bị cho trận đá bóng căng nhất lịch sử với các thiên đình khác. Các thành viên gồm: Táo kinh tế: dang7rickroll, táo y tế: phanhuykhang, táo mạng: nguyenminhhai021009, táo giao thông: stack_queue_4977, táo nông nghiệp: huyhau6a2, ...(Tên viết trong đây là hư cấu hehe)

Trước sự kiện này, ngọc hoàng đã tạo ra 1 thử thách để luyện tập cho các táo. Cụ thể như sau: sẽ có 1 con đường phân nhánh vô hạn, với nút đầu luôn có giá trị là 1. Các táo sẽ phải di chuyển tối đa n bước, bước đầu tiên sẽ đi vào nút gốc, các bước sau có thể chọn L hoặc R. Với L: nút tiếp theo sẽ có giá trị nhân đôi lên so với nút trước đó, với R: nút tiếp đó sẽ có giá trị nhân đôi lên cộng 1 so với nút trước đó. VD ta có đồ thị như sau:

                                                                            1
                                                                           / \     
                                                                          /   \     
                                                                         /     \     
                                                                    2(1.2=2)  3(1.2+1=3)

Số điểm bạn đạt được sẽ là tổng tất cả các nút bạn đã đứng sau n bước. Ngọc hoàng đang thắc mắc rằng tổng số điểm với tất cả các khả năng có thể xảy ra là bao nhiêu, do quá mệt mỏi sau 1 năm điều hành các táo nên ngọc hoàng quyết định nhờ táo mạng, nhưng chợt nhớ các bạn trên LQDOJ, với lại lười search mạng quá và còn phải tập luyện nên táo mạng xin nhờ các bạn hãy giải quyết thắc mắc của ngọc hoàng giúp nhé!

Dữ liệu vào: Duy nhất 1 số n(n<=10^6)

Dữ liệu ra: Duy nhất 1 số là kết quả của bài toán sau khi mod 10^9+7

Sample test:

Input:

3

Output:

44

Giải thích: Ta có hình vẽ:

                                                                    1
                                                                   / \     
                                                                  /   \     
                                                                 /     \  
                                                                /       \   
                                                               2         3
                                                              / \       / \
                                                             /   \     /   \
                                                            /     \   /     \
                                                           4       5 6       7

Ở đây các khả năng có thể xảy ra gồm: 1(1), 3(1+2), 4(1+3), 7(1+2+4), 8(1+2+5), 10(1+3+6), 11(1+3+7). Tổng là 44

Chú ý: Nếu các bạn không hiểu giải thích thì các bạn có thể tự vẽ sẽ dễ hiểu hơn đó!

CSES - Permutations II | Hoán vị II

nhphucqt

Một hoán vị gồm 1, 2, \ldots n được gọi là đẹp nếu không có các phần tử liền kề có chênh lệch là 1.

Cho n, nhiệm vụ của bạn là đếm số lượng hoán vị đẹp.

Input

  • Dòng đầu vào duy nhất chứa một số nguyên n.

Output

  • In số lượng hoán vị đẹp gồm 1, 2, \ldots, n chia lấy dư cho 10 ^ 9 + 7.

Constraints

  • 1 \leq n \leq 1000

Example

Sample input

5

Sample output

14

CSES - Fixed-Length Paths I | Đường đi độ dài cố định II

Flower_On_Stone

Cho một cây gồm n nút, nhiệm vụ của bạn là đếm số đường đi riêng biệt có tối thiểu k_1 và tối đa k_2 cạnh.

Input

  • Dòng đầu tiên chứa hai số nguyên n,k_1k_2: số nút và độ dài đường đi. Các nút được đánh số 1,2,…, n.
  • Sau đó có n − 1 dòng mô tả các cạnh. Mỗi dòng chứa hai số nguyên ab: có một cạnh nối hai nút ab.

Output

  • In một số nguyên: số lượng đường đi.

Constraints

  • 1≤k_1≤k_2\le n≤2 \cdot 10^5
  • 1≤a,b≤n

Example

Sample Input

5 2 3
1 2
2 3
3 4
3 5

Sample Output

6

CSES - Sum of Divisors | Tổng các ước

Flower_On_Stone, Elektrikar

Gọi \sigma(n) là tổng các ước của một số nguyên n. Ví dụ, \sigma(12) = 1 + 2 + 3 + 4 + 6 + 12 = 28.

Nhiệm vụ của bạn là tính tổng \sum_{i=1}^n \sigma(i) modulo 10^9 + 7.

Input

  • Một dòng duy nhất chứa số nguyên n.

Output

  • In ra \sum_{i=1}^n \sigma(i) modulo 10^9 + 7.

Constraints

  • 1 \le n \le 10^{12}

Example

Sample input

5

Sample output
21

PVHOI 2.0 - Bài 1: Chất lượng cuộc sống

skyvn97

Thành phố Nồi Hạ có phân bổ dân cư hết sức đặc biệt: Thành phố có r \cdot c khu dân cư đựoc xếp dưới dạng lưới hình chữ nhật gồm r hàng và c cột. Các hàng được đánh số từ 1 đến r, các cột được đánh số từ 1 đến c. Khu dân cư nằm trên giao của hàng i và cột j được kí hiệu là (i, j).

Trong đợt khảo sát vừa qua, lãnh đạo thành phố đã đi từng ngõ, gõ từng nhà để thu thập thông tin về chất lượng cuộc sống ở các khu dân cư. Tiếp đó, họ xếp hạng các khu dân cư bằng các con số phân biệt từ 1 đến r \cdot c. Khu dân cư xếp hạng 1 có chất lượng cuộc sống tốt nhất. Khu dân cư xếp hạng r \cdot c có chất lượng tệ nhất. Khu dân cư được xếp hạng càng nhỏ thì chất lượng sống càng cao. Theo kết quả, khu dân cư (i, j) được xếp hạng p_{i, j}.

Từ kết quả xếp hạng, thành phố sẽ chọn ra một khu vực để tăng cường đầu tư nhằm nâng cao chất lượng cuộc sống ở đây. Thành phố quyết định rằng các khu dân cư được nâng cấp sẽ nằm trong một hình chữ nhật con có kích thước h \cdot w (gồm h hàng và w cột), với hw là các số lẻ. Lãnh đạo thành phố muốn chọn những nơi chất lượng sống còn thấp để ưu tiên cải tạo, nhưng họ cần đưa ra một tiêu chí đánh giá chung cho một vùng hình chữ nhật kích thước h \cdot w. Theo đó, "mức sống tiêu biểu" của một khu vực là trung vị của thứ hạng chất lượng cuộc sống của các khu dân cư bên trong đó. (xem phần dưới để biết định nghĩa về trung vị)

Khu vực được chọn để đầu tư phải có "mức sống tiêu biểu" lớn nhất (vì thứ hạng càng lớn thì chất lượng cuộc sống càng thấp) trong các khu vực có thể chọn. Bạn hãy giúp họ tìm ra "mức sống tiêu biểu" lớn nhất này nhé.

Giá trị trung vị của một dãy số (a_1, a_2, \ldots, a_n) (với n là số lẻ) là giá trị thứ \frac{n+1}{2} (ở vị trí chính giữa) của dãy số sau khi dãy đã được sắp xếp theo thứ tự tăng dần. Ví dụ, trung vị của dãy (22, 7, 97)22 (do dãy sau khi sắp xếp trở thành (7, 22, 97); trung vị của dãy (2, 2, 7, 1, 9, 9, 7)7 (do dãy sau khi sắp xếp trở thành (1, 2, 2, 7, 7, 9, 9).

Input

Dòng đầu tiên chứa bốn số nguyên r, c, h, w (1 \leq h \leq r \leq 3000, 1 \leq w \leq c \leq 3000), lần lượt là kích thước của thành phố Nồi Hạ và kích thước vùng được chọn để nâng cao chất lượng cuộc sống. Dữ liệu vào đảm bảo hw là các số lẻ.

Trong r dòng còn lại, dòng thứ i chứa c số nguyên p_{i, 1}, p_{i, 2}, \ldots, p_{i, c} (1 \leq p_{i, j} \leq r \cdot c), trong đó p_{i, j} là thứ hạng chất lượng cuộc sống của khu (i, j). Dữ liệu vào đảm bảo r \cdot c số này là đôi một phân biệt.

Output

In ra một số nguyên duy nhất là "mức sống tiêu biểu" lớn nhất của một khu vực có dạng hình chữ nhật kích thước h \cdot w.

Subtasks

Bộ test của bài được chia làm các subtask như sau:

  • Subtask 1 (9.1 điểm): h = w = 1
  • Subtask 2 (9.1 điểm): h = rw = c
  • Subtask 3 (14.7 điểm): r, c \leq 30
  • Subtask 4 (14.7 điểm): r, c \leq 100
  • Subtask 5 (7 điểm): r, c \leq 300
  • Subtask 6 (7 điểm): r, c \leq 1000
  • Subtask 7 (8.4 điểm): Không có ràng buộc gì thêm.

Điểm tối đa của bài là 70 điểm.

Ví dụ

Input

5 5 3 3
5 11 12 16 25
17 18 2 7 10
4 23 20 3 1
24 21 19 14 9
6 22 8 13 15

Output

20

Giải thích

Trong ví dụ ở trên, lãnh đạo thành phố nên chọn hình chữ nhật kích thước 3 \cdot 3 ở góc trái dưới làm khu vực được nâng cấp. Thứ hạng của các khu dân cư bên trong khu vực này lần lựot là 4, 23, 20, 24, 21, 19, 6, 22, 8 (được sắp xếp theo thứ tự tăng dần là 4, 6, 8, 19, 20, 21, 22, 23, 24). Nhu vậy, ``mức sống tiêu biểu'' của khu vực này là 20.

PVHOI 2.0 - Bài 3: Biến đổi dãy ngoặc

skyvn97

Dãy ngoặc là một dãy chỉ gồm các kí tự mở ngoặc ( và đóng ngoặc ). Dãy ngoặc đúng là một dãy ngoặc được xây dựng dựa trên quy tắc sau:

  • Dãy ngoặc rỗng là một dãy ngoặc đúng.
  • Nếu A là một dãy ngoặc đúng, thì (A) là một dãy ngoặc đúng.
  • Nếu AB là hai dãy ngoặc đúng thì AB cũng là dãy ngoặc đúng.

Ví dụ, (()), ()()()(()) là các dãy ngoặc đúng; còn )( hay (() thì không.

Bạn được cho một xâu kí tự s là một dãy ngoặc đúng cùng dãy q số p_1, p_2, \ldots, p_q. Bạn cần thực hiện lần lượt q thao tác. Tại thao tác thứ i, bạn cần làm những việc sau:

  • Thay đổi kí tự thứ p_i của s (từ ( sang ) hoặc ngược lại).
  • Tìm vị trí a_i là vị trí nhỏ nhất sao cho nếu thay đổi kí tự ở vị trí a_i (từ ( sang ) hoặc ngược lại) thì xâu kí tự s trở thành dãy ngoặc đúng.
  • In ra vị trí a_i vừa tìm được và thay đổi kí tự ở vị trí này.

Chú ý rằng, ở bất kì thao tác nào, bạn bắt đầu khi xâu s đang là dãy ngoặc đúng. Do đó, việc thay đổi kí tự thứ p_i khiến s bây giờ chắc chắn không phải dãy ngoặc đúng, và ta dễ dàng chứng minh được vị trí a_i cần tìm ở trên là luôn tồn tại. Khi thay đổi kí tự ở vị trí a_i, s trở lại là dãy ngoặc đúng.

Input

Dòng đầu tiên chứa hai số nguyên nq (1 \leq n \leq 1000000, 1 \leq q \leq 600000), lần lượt là độ dài của dãy ngoặc s và số thao tác bạn cần thực hiện.

Dòng thứ hai chứa xâu kí tự s là một dãy ngoặc đúng độ dài n.

Dòng thứ ba chứa q số nguyên p_1, p_2, \ldots, p_q (1 \leq p_q \leq n) mô tả các thao tác cần thực hiện.

Output

In ra q số nguyên a_1, a_2, \ldots, a_q là các vị trí tìm được ở các thao tác. Các số cần được viết trên một dòng, ngăn cách với nhau bởi dấu cách.

Subtasks

Bộ test của bài được chia làm các subtask như sau:

  • Subtask 1 (14.4 điểm): n \leq 500q \leq 300
  • Subtask 2 (15.6 điểm): n \leq 7000q \leq 4200
  • Subtask 3 (14.4 điểm): n \leq 200000q \leq 120000
  • Subtask 4 (15.6 điểm): n \leq 1000000q \leq 600000

Điểm tối đa của bài là 60 điểm.

Ví dụ

** Input **

6 3
((()))
4 3 1

** Output**

2 2 1

Giải thích

Trong ví dụ trên, ban đầu dãy ngoặc s((())). Các thao tác diễn ra như sau:

  • Thao tác đầu tiên: Sau khi thay đổi kí tự ở vị trí p_1 = 4, s trở thành (((()). Để s trở lại là dãy ngoặc đúng, bạn cần thay đổi kí tự ở vị trí a_1 = 2. Khi đó s trở thành ()(()).
  • Thao tác tiếp theo: Sau khi thay đổi kí tự ở vị trí p_2 = 3, s trở thành ())()). Để s trở lại là dãy ngoặc đúng, bạn cần thay đổi kí tự ở vị trí a_2 = 2. Khi đó s trở thành (()()).
  • Thao tác cuối cùng: Sau khi thay đổi kí tự ở vị trí p_3 = 1, s trở thành )()()). Để s trở lại là dãy ngoặc đúng, bạn cần thay đổi kí tự ở vị trí a_3 = 1. Khi đó s trở thành (()()).

Nhảy lò cò

Small

Nhảy lò cò là trò chơi dân gian của Việt Nam. Thuở bé Lan rất thích trò chơi này. Vì vậy, khi được học môn “Thiết kế và phân tích thuật toán”, Lan đã đặt ra bài toán khá thú vị liên quan đến một dạng của trò chơi này. Trên mặt phẳng vẽ N vòng tròn. Các vòng tròn này lại được xếp trên một vòng tròn lớn và được đánh số từ 1 đến N theo chiều đi vòng quanh vòng tròn lớn thuận chiều kim đồng hồ (xem minh họa ở hình 1 với N=3). Hai vòng tròn nhỏ liên tiếp nhau theo một chiều đi vòng quanh vòng tròn lớn được gọi là ở bên cạnh nhau.

Trò chơi lò cò trên vòng tròn (N=3)

Người chơi bắt đầu từ vòng tròn đánh số 1, mỗi bước nhảy người chơi sẽ di chuyển sang một trong hai vòng tròn bên cạnh. Bài toán mà Lan cần giải quyết là: Đếm xem có bao nhiêu cách khác nhau thực hiện K bước nhảy bắt đầu từ vòng tròn 1 rồi lại quay về vòng tròn 1.

Yêu cầu: Giúp Lan giải quyết bài toán đặt ra.

Input

  • Gồm duy nhất một dòng chứa ba số nguyên dương N, K, M\ (N ≤ 4000; M ≤ 10^9+7) được ghi cách nhau bởi dấu cách theo thứ tự là số lượng vòng tròn và số lượng bước nhảy.

Output

  • Gồm một số nguyên là phần dư trong phép chia số lượng cách nhảy tìm được cho M

Input

3 4 100

Output

6

Giải thích: Có 6 cách thực hiện thỏa mãn điều kiện là:

1, 2, 3, 2, 1;
1, 3, 2, 3, 1;
1, 2, 1, 2, 1;
1, 3, 1, 3, 1;
1, 2, 1, 3, 1;
1, 3, 1, 2, 1.

Ràng buộc:

  • Subtask 1 (10%): K ≤ 20.
  • Subtask 2 (30%): K ≤ 10^4.
  • Subtask 3 (60%): K ≤ 10^6.

Nguồn: 3D 20172018

COIN

Small

Naruto có N cái túi, túi thứ iA_i đồng tiền. Mỗi lần đi làm nhiệm vụ, Naruto sẽ chọn ra một số túi để mang theo nếu thỏa mãn điều kiện sau:

Gọi S là tổng số tiền trong tất cả các túi Naruto chọn, cần chọn sao cho S \% 2 = P (% là phép lấy phần dư, % trong C++ và mod trong pascal). Hỏi Naruto có bao nhiêu cách chọn các túi?

Dữ liệu

  • Dòng đầu gồm 2 số nguyên NP.
  • Dòng tiếp theo gồm N số là A_1, A_2, A_3, ...A_N

Kết quả

  • Gồm một dòng duy nhất chứa số nguyên là kết quả của bài toán. (Kết quả lấy phần dư với 10^9 + 7).

Sample Input

2 0 
1 3

Sample Output

2

Giải thích

  • Cách 1: Không chọn cái nào.
  • Cách 2: Chọn cả 2 túi. 1 + 3 = 4, 4%2 = 0 = P

Giới hạn

  • 1 \le N \le 50
  • 0 \le P \le 1
  • 1 \le A_i \le 100

Nguồn: FC

CSES - Nested Ranges Check | Kiểm tra đoạn bao chứa

Flower_On_Stone, HoaiAnDeepTry, nguyendangquocthinh

Cho n đoạn, nhiệm vụ của bạn là xác định xem với mỗi đoạn có chứa một số đoạn nào khác và có một số đoạn nào khác chứa nó hay không.

Đoạn [a,b] chứa đoạn [c,d] nếu a \le cd \le b.

Input

  • Dòng đầu vào đầu tiên có một số nguyên n: số lượng đoạn.
  • Sau này, có n dòng mô tả các đoạn. Mỗi dòng có hai số nguyên xy: đoạn là [x,y].
  • Bạn có thể giả định rằng không có đoạn nào xuất hiện nhiều hơn một lần trong đầu vào.

Output

  • Trước tiên, in một dòng mô tả cho mỗi đoạn (theo thứ tự đầu vào) nếu nó chứa một số đoạn khác (1) hoặc không (0).
  • Sau đó, in một dòng mô tả cho mỗi đoạn (theo thứ tự đầu vào) nếu có một số đoạn khác chứa nó (1) hoặc không (0).

Constraints

  • 1 \le n \le 2 \cdot 10^5
  • 1 \le x < y \le 10^9

Example

Sample input

4
1 6
2 4
4 8
3 6

Sample output
1 0 0 0
0 1 0 1

Ký tự mới

admin, daicadihoc

Viết chương trình nhập vào một ký tự in hoa, in ra ký tự thường tương ứng

Dữ liệu vào

  • Một ký tự là chữ cái in hoa

Kết quả

  • In ra ký tự thường tương ứng

Sample Input

A

Sample Output

a

CSES - Longest Flight Route | Lộ trình bay dài nhất

edatnvt, Flower_On_Stone, kitsune

Uolevi đã giành chiến thắng trong một cuộc thi, và giải thưởng là một chuyến bay miễn phí mà có thể bao gồm một hoặc nhiều chuyến bay qua các thành phố. Tất nhiên, Uolevi muốn chọn một chuyến đi có nhiều thành phố nhất có thể.

Uolevi muốn bay từ Syrjälä đến Lehmälä để anh thăm số lượng thành phố tối đa. Bạn được cho danh sách các chuyến bay khả thi, và bạn biết rằng không có chu trình có hướng trong mạng lưới chuyến bay.

Input

  • Dòng đầu vào đầu tiên có hai số nguyên nm: số lượng thành phố và chuyến bay. Các thành phố được đánh số 1,2,\ldots,n. Thành phố 1 là Syrjälä, và thành phố n là Lehmälä.
  • Sau này, có m dòng mô tả các chuyến bay. Mỗi dòng có hai số nguyên ab: có một chuyến bay từ thành phố a đến thành phố b. Mỗi chuyến bay là một chuyến bay một chiều.

Output

  • Đầu tiên in số lượng thành phố tối đa trong lộ trình. Sau này, in các thành phố theo thứ tự mà chúng sẽ được thăm. Bạn có thể in bất kì giải pháp hợp lệ nào.
  • Nếu không có lời giải nào, in IMPOSSIBLE.

Constraints

  • 2 \leq n \leq 10 ^ 5
  • 1 \leq m \leq 2 \cdot 10 ^ 5
  • 1 \leq a, b \leq n

Example

Sample input

5 5
1 2
2 5
1 3
3 4
4 5

Sample output

4
1 3 4 5

divisor03

PhanDinhKhoi

Cho 3 số nguyên dương x, y, z. Trong đó 1 \leq x \leq y \leq z \leq 10^4.

Trong 1 LƯỢT, có thể +1 hoặc -1 cho 1 trong ba số x, y, z.

Hãy tìm số LƯỢT ít nhất để 1 \leq x \leq y \leq z,\ z \% y + z \% x + y \% x = 0. ('%' là phép chia lấy dư)

Lưu ý, trong Input dòng đầu tiên là số test, trong Output mỗi kết quả được in ra trên một hàng.

Input

2
1  1  3
3  3  5

Output

0
1

GIẢI THÍCH

  • test 1 (x = 1, y = 1, z = 3): vì z \% y + z \% x + y \% x = 0 -> nên không cần thêm lượt nào nữa, đáp án là 0.
  • test 2 (x = 3, y = 3, z = 5): ta có thể cộng 1 vào z và thỏa mãn điều kiện, đáp án là 1.

Duyệt thư mục

letangphuquy

Trong thư mục root có chứa tổng cộng n thư mục và tập tin (bao gồm chính nó). Dễ thấy, ngoại trừ thư mục root thì mỗi tập tin hoặc thư mục đều có chính xác một thư mục bao chứa nó - tạm gọi là thư mục cha. Vì thế có tổng cộng n-1 quan hệ cha-con trong thư mục root. Bạn được cho biết tên của các thư mục và tập tin, cũng như các quan hệ cha-con. Nhằm theo dõi nội dung của thư mục, bạn cần in ra tất cả mọi đường dẫn hợp lệ, (bắt đầu bằng root). Hãy lập trình giải quyết vấn đề trên.

Input

Dòng đầu chứa n : số lượng tập tin và thư mục.

Dòng tiếp theo chứa n xâu là tên của tập tin hoặc thư mục tương ứng.

n-1 dòng tiếp theo, mỗi dòng chứa 2 số u,v, có ý nghĩa là tên thứ u trong danh sách tên trên bao chứa tên thứ v. Dữ liệu đảm bảo u là một thư mục.

Dữ liệu đảm bảo tồn tại duy nhất một xâu root.

Output

In ra n dòng, dòng thứ i là đường dẫn tới tập tin hoặc thư mục thứ i.

Scoring

1 \le n \le 200 trong mọi test

Example

Sample input

8
break.zip program.docx sense.exe list.mp3 outside.pptx root purpose.jpg okay.pptx 
6 7
6 2
6 4
6 8
6 5
6 1
6 3

Sample output

root/break.zip
root/program.docx
root/sense.exe
root/list.mp3
root/outside.pptx
root
root/purpose.jpg
root/okay.pptx

CSES - Line Segment Intersection | Giao điểm hai đoạn thẳng

PhanDinhKhoi, Flower_On_Stone

There are two line segments: the first goes through the points (x_1,y_1) and (x_2,y_2), and the second goes through the points (x_3,y_3) and (x_4,y_4).

Your task is to determine if the line segments intersect, i.e., they have at least one common point.

Input

  • The first input line has an integer t: the number of tests.
  • After this, there are t lines that describe the tests. Each line has eight integers x_1, y_1, x_2, y_2, x_3, y_3, x_4 and y_4.

Output

  • For each test, print YES if the line segments intersect and NO otherwise.

Constraints

  • 1 \ \leq \ t \ \leq \ 10^5
  • -10^9 \ \leq \ x_1, y_1, x_2, y_2, x_3, y_3, x_4, y_4 \ \leq \ 10^9
  • x_1 \neq x_2 or y_1 \neq y_2
  • x_3 \neq x_4 or y_3 \neq y_4

Example

Sample input

5
1 1 5 3 1 2 4 3
1 1 5 3 1 1 4 3
1 1 5 3 2 3 4 1
1 1 5 3 2 4 4 1
1 1 5 3 3 2 7 4

Sample output

NO
YES
YES
YES
YES

BEAUTY - NHS

dang7rickroll

Một số tự nhiên được gọi là số đẹp nếu tổng các chữ số lẻ trong nó bằng tổng các chữ số chẵn.

Ví dụ: 3234 là một số đẹp vì tổng các chữ số lẻ là 3 + 3 = 6, tổng các chữ số chẵn là 2 + 4 = 6.

Yêu cầu: Kiểm tra một số nguyên dương N có phải là số đẹp hay không. Nếu đẹp, in ra YES, ngược lại in ra NO.

Dữ liệu:

  • Dòng đầu ghi T không quá 100 - số câu hỏi.
  • T dòng tiếp theo, mỗi dòng ghi ra số nguyên dương N không quá 10^{1000}.

Kết quả:

  • Ứng với mỗi câu hỏi, in ra YES/NO tương ứng.

Sample input

1
3234

Sample output

YES


Nguồn: NHS lần 2 - 2022

Suggester: HoaiAnDeepTry

Sử dụng bộ test tự sinh, không sử dụng bộ test chính thức của kỳ thi.