Thay đổi số

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

Point: 100

Cho một dãy số nguyên dương gồm n phần tử ~a_1, a_2, \ldots, a_n~. Trọng số ~W~ của dãy ~a~ được định nghĩa là ước chung lớn nhất của tất cả các phần tử trong dãy, tức là ~W = \gcd(a_1, a_2, \ldots, a_n)~.

Ở đây, ~gcd~ được định nghĩa là phép lấy ước chung lớn nhất.

Bạn được phép thay đổi tối đa hai phần tử bất kỳ trong dãy ~a~ thành hai số nguyên dương khác sao cho trọng số mới của dãy đạt giá trị lớn nhất có thể.

Nhiệm vụ của bạn là tìm giá trị lớn nhất có thể của trọng số mới.

Dữ liệu vào từ tệp văn bản: THAYDOISO.INP

  • Dòng đầu tiên gồm số nguyên dương ~n~ (~3 \le n \le 2 \cdot 10^5~).
  • Dòng thứ hai gồm ~n~ số nguyên dương ~a_1, a_2, \ldots, a_n~ (~1 \le a_i \le 10^9~).

Kết quả ghi ra tệp văn bản: THAYDOISO.OUT

  • Gồm số nguyên dương duy nhất là giá trị lớn nhất có thể của trọng số mới sau khi thay đổi tối đa hai phần tử trong dãy ~a~.

Scoring

  • Subtask ~1~ (~30\%~ số điểm): ~N = 3~.
  • Subtask ~2~ (~30\%~ số điểm): ~N, a_i \le 1000~.
  • Subtask ~3~ (~30\%~ số điểm): ~N, a_i \le 10^5~.
  • Subtask ~4~ (~10\%~ số điểm): Không có ràng buộc gì thêm.

Example

Sample Input 1
3
4 4 12
Sample Output 1
12
Sample Input 2
5
6 1 9 2 12
Sample Output 2
3

Explanation

Ở ví dụ thứ nhất, ta thay hai phần tử ~a_1~ và ~a_2~ thành giá trị ~12~.

Ở ví dụ thứ hai, ta thay hai phần tử ~a_2~ và ~a_4~ thành giá trị ~3~.


Thay Đổi Dãy

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

Point: 100

Cho một mảng ~a~ gồm ~n~ số nguyên.

Có ~q~ truy vấn. Mỗi truy vấn gồm ba số nguyên ~l, r, x~. Với mỗi truy vấn, ta thay tất cả phần tử ~a_i~ có giá trị nằm trong đoạn ~[l, r]~ thành ~x~.

Đầu tiên, bạn cần in ra tổng của dãy ~a~ ban đầu.

Sau mỗi truy vấn, hãy in ra tổng các phần tử trong mảng sau khi thực hiện thay đổi.

Yêu cầu

Cho mảng ~a~ và ~q~ truy vấn.

Với mỗi truy vấn ~l, r, x~, cập nhật mọi phần tử ~a_i~ thỏa mãn: ~l \le a_i \le r~ thành: ~a_i = x~

Hãy in ra tổng ban đầu của mảng và tổng của mảng sau mỗi truy vấn.

Input

  • Dòng đầu tiên gồm hai số nguyên ~n, q~.
  • Dòng thứ hai gồm ~n~ số nguyên ~a_1, a_2, ..., a_n~.
  • ~q~ dòng tiếp theo, mỗi dòng gồm ba số nguyên ~l, r, x~.

Output

In ra ~q + 1~ dòng.

  • Dòng đầu tiên là tổng ban đầu của mảng.
  • Dòng thứ ~i + 1~ là tổng của mảng sau truy vấn thứ ~i~.

Ràng buộc

  • ~1 \le n \le 200000~
  • ~0 \le q \le 200000~
  • ~0 \le a_i \le 10^9~
  • ~0 \le x \le 10^9~
  • ~0 \le l \le r \le 10^9~

Scoring

Subtask Điểm Ràng buộc thêm
~1~ ~10~ ~q = 0~
~2~ ~20~ ~n, q \le 2000~
~3~ ~20~ ~l = r \le 200000~ và ~a_i, x \le 200000~
~4~ ~10~ ~l = r~
~5~ ~20~ ~x = 0~
~6~ ~30~ Không có ràng buộc thêm

Sample Input 1

6 4
2 5 5 8 10 1
5 5 3
1 3 7
7 10 0
4 6 2

Sample Output 1

31
27
46
0
0

Giải thích

Ban đầu mảng là:

  • ~[2, 5, 5, 8, 10, 1]~

  • Tổng ban đầu là ~31~.

Sau truy vấn 1, các phần tử có giá trị trong đoạn ~[5, 5]~ được đổi thành ~3~.

Mảng trở thành:

  • ~[2, 3, 3, 8, 10, 1]~

  • Tổng là ~27~.

Sau truy vấn 2, các phần tử có giá trị trong đoạn ~[1, 3]~ được đổi thành ~7~.

Mảng trở thành:

  • ~[7, 7, 7, 8, 10, 7]~

  • Tổng là ~46~.

Sau truy vấn 3, các phần tử có giá trị trong đoạn ~[7, 10]~ được đổi thành ~0~.

Mảng trở thành:

  • ~[0, 0, 0, 0, 0, 0]~

  • Tổng là ~0~.

Sau truy vấn 4, không có phần tử nào có giá trị trong đoạn ~[4, 6]~, nên mảng không đổi.

  • Tổng vẫn là ~0~.

Sample Input 2

5 3
100 200 300 400 500
150 350 50
50 100 10
10 500 1

Sample Output 2

1500
1100
930
5

Giải thích

Ban đầu mảng là:

  • ~[100, 200, 300, 400, 500]~

  • Tổng ban đầu là ~1500~.

Sau truy vấn 1, các phần tử có giá trị trong đoạn ~[150, 350]~ được đổi thành ~50~.

Mảng trở thành:

  • ~[100, 50, 50, 400, 500]~

  • Tổng là ~1100~.

Sau truy vấn 2, các phần tử có giá trị trong đoạn ~[50, 100]~ được đổi thành ~10~.

Mảng trở thành:

  • ~[10, 10, 10, 400, 500]~

  • Tổng là ~930~.

Sau truy vấn 3, các phần tử có giá trị trong đoạn ~[10, 500]~ được đổi thành ~1~.

Mảng trở thành:

  • ~[1, 1, 1, 1, 1]~

  • Tổng là ~5~.


Chia Đa Giác

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

Point: 100

Cho một đa giác lồi có ~n~ đỉnh, các đỉnh được đánh số từ ~1~ đến ~n~. Người ta chia đa giác này thành ~m+1~ đa giác con bằng ~m~ đường chéo (~m \le n-3~). Các đường chéo này cùng với ~n~ cạnh của đa giác đôi một không trùng nhau hay cắt nhau (chỉ có điểm chung tại các đầu mút). Một đa giác con gồm các đỉnh lần lượt ~x_1,x_2,...,x_t~ được coi là có giá trị ~\Sigma_{i=1}^t 2^{x_i}~.

Cho đa giác, ~m~ đường chéo và số nguyên dương ~k~ (~k \le m+1~), sắp xếp các đa giác con theo giá trị tăng dần, hãy xác định đa giác con thứ ~k~.

Input

  • Dòng đầu gồm ba số nguyên ~n,m,k~ (~3 \le n \le 5 \times 10^5, 0 \le m \le n-3, 1 \le k \le m+1~).
  • ~m~ dòng tiếp theo, mỗi dòng chứa hai số nguyên ~u,v~ (~1 \le u,v \le n~) thể hiện một đường chéo trong đa giác.

Output

  • Một dòng chứa các đỉnh của đa giác con thứ ~k~ (các đỉnh được ghi theo thứ tự tăng dần).

Scoring

  • Subtask ~1~ (~25\%~ số điểm): ~n \le 50, m \le 20~.
  • Subtask ~2~ (~25\%~ số điểm): ~m = 1~.
  • Subtask ~3~ (~25\%~ số điểm): ~m = n-3~.
  • Subtask ~4~ (~25\%~ số điểm): không có ràng buộc gì thêm.

Example

Sample Input
6 3 2
1 3
1 4
1 5
Sample Output
1 3 4

Nhiệm Vụ

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

Point: 100

An đang chơi một trò chơi điện tử gồm ~n~ nhiệm vụ được đánh số từ ~1~ đến ~n~. Nhiệm vụ thứ ~i~ làm thay đổi năng lượng của người chơi thêm ~a_i~ đơn vị. Giá trị ~a_i~ có thể dương, bằng ~0~ hoặc âm.

An có thể chọn làm một số nhiệm vụ theo đúng thứ tự ban đầu, không nhất thiết phải làm các nhiệm vụ liên tiếp. An chỉ được làm một nhiệm vụ nếu sau khi hoàn thành nhiệm vụ đó, năng lượng của An không bị âm.

Có ~q~ kịch bản. Ở kịch bản thứ ~j~, An có năng lượng ban đầu là ~s_j~.

Yêu cầu

Với mỗi kịch bản, hãy tính số nhiệm vụ nhiều nhất mà An có thể hoàn thành.

Input

  • Dòng đầu tiên chứa hai số nguyên ~n, q~ ~(1 \le n \le 2000, 1 \le q \le 2 \times 10^5)~.
  • Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2, \ldots, a_n~ ~(|a_i| \le 10^9)~.
  • Dòng thứ ba chứa ~q~ số nguyên ~s_1, s_2, \ldots, s_q~ ~(0 \le s_j \le 10^9)~.

Output

In ra ~q~ số nguyên trên một dòng, số thứ ~j~ là số nhiệm vụ tối đa An có thể hoàn thành trong kịch bản thứ ~j~.

Subtask

Subtask Ràng buộc Điểm
~1~ ~n \le 20~, ~q \le 5~ ~15\%~
~2~ ~n \le 20~ ~20\%~
~3~ ~q \le 1000~ ~25\%~
~4~ ~n \le 500~ ~25\%~
~5~ Không có ràng buộc gì thêm ~15\%~

Sample Input

7 3
-13 0 1 -14 -9 -5 4
20 12 2026

Sample Output

5 4 7

Giải thích ví dụ

Với năng lượng ban đầu ~s = 12~, An có thể làm các nhiệm vụ ~2, 3, 6, 7~.

Năng lượng sau mỗi nhiệm vụ lần lượt là:

  • Sau nhiệm vụ ~2~: ~12 + 0 = 12~
  • Sau nhiệm vụ ~3~: ~12 + 1 = 13~
  • Sau nhiệm vụ ~6~: ~13 + (-9) = 4~
  • Sau nhiệm vụ ~7~: ~4 + 4 = 8~

Vậy với ~s = 12~, An hoàn thành được tối đa ~4~ nhiệm vụ.


palinpath

Nộp bài
Time limit: 3.0 / Memory limit: 512M

Point: 100

Cho một đồ thị vô hướng gồm ~n~ đỉnh ~m~ cạnh. Cạnh ~i~ nối giữa đỉnh ~u_i~ và ~v_i~ và có kí tự ~c_i~ được viết lên trên nó.

Hãy tìm một đường đi từ ~1~ đến ~n~ ngắn nhất mà sau khi viết các kí tự có được khi đi qua các cạnh là một xâu palindrome. Nếu không tồn tại bất kì đường đi nào thỏa mãn là palindrome, in ra ~-1~.

Lưu ý: Đồ thị có thể tồn tại khuyên và cạnh lặp, các đỉnh và cạnh có thể đi qua lại nhiều lần.

Input

  • Dòng đầu tiên gồm hai số nguyên dương ~n, m~ ~(1 \le n, m \le 1000)~.
  • ~m~ dòng tiếp theo, mỗi dòng gồm ~u_i, v_i, c_i~ mô tả cạnh thứ ~i~ của đồ thị.

Output

  • Nếu tồn tại một đường đi tạo ra xâu palindrome, in ra độ dài ngắn nhất có thể. Nếu không, in ra ~-1~.

Sample Input 1

4 5
1 1 a
1 2 a
2 3 a
3 4 b
4 4 a

Sample Output 1

5

Explanation 1

Đi qua các cạnh ~2, 3, 4, 5, 5~, ta nhận được xâu aabaa.

Sample Input 2

3 4
1 1 a
1 2 a
2 3 b
3 3 b

Sample Output 2

-1

Time limit: 1.0 / Memory limit: 256M

Point: 100

Cho dãy số gồm ~n~ số nguyên ~a_1, a_2, …, a_n~ và ~2~ số nguyên không âm ~L, R (L ≤ R)~.

Yêu cầu: Đếm số cặp ~(i, j)~ thỏa mãn điều kiện: ~i ≤ j~ và ~L ≤ |a_i+…+a_j| ≤ R~.

Input

  • Dòng đầu tiên chứa ~3~ số nguyên ~n, L, R~ ~(n ≤ 3*10^5 ; 0 ≤ L ≤ R ≤ 10^9)~
  • Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2,…, a_n (|a_i|≤ 10^9)~

Output

  • Một số nguyên duy nhất là số lượng cặp ~(i, j)~ đếm được.

Subtask

  • Subtask 1 (~30\%~ số điểm): ~n \le 10^3~.
  • Subtask 2 (~50\%~ số điểm): ~n \le 10^5~ và ~a_i \ge 0~.
  • Subtask 3 (~20\%~ số điểm): Không có giới hạn gì thêm.

Sample Test

Input

3 0 1
1 -1 2

Output

4

Tập Xor

Nộp bài
Time limit: 2.0 / Memory limit: 512M

Point: 100

Cho dãy số nguyên dương ~a_1,a_2,...,a_n~ và một số ~k~.

Một tập con ~S~ của ~\{1,2,...,n\}~ được gọi là tập ~xor~ nếu ~S~ không có quá ~k~ phần tử và với mọi ~i,j~ thuộc ~S~ ta có ~a_i + a_j = a_i \oplus a_j~, với ~\oplus~ là phép ~xor~.

Trọng số của ~S~ được hiểu là ~\sum a_i, \forall i \in S~.

Input

  • Dòng đầu tiên chứa số nguyên dương ~n~.
  • Dòng thứ hai chứa số nguyên dương ~k~.
  • Nếu ~n \le 10^4~ thì có dòng thứ ba, ngược lại không có.

Output

  • Ghi ra tổng trọng số tất cả các tập ~xor~, sau khi lấy dư cho ~10^9+7~.

Subtask

  • Sub ~1~ ~(20\%)~: ~1 \le n,k,a_i \le 10^2~
  • Sub ~2~ ~(20\%)~: ~1 \le n,k,a_i \le 10^3~.
  • Sub ~3~ ~(20\%)~: ~1 \le n,k \le 10^4~ và ~a_i = i~.
  • Sub ~4~ ~(20\%)~: ~1 \le n,k,a_i \le 10^4~.
  • Sub ~5~ ~(20\%)~: ~1 \le n,k \le 10^{1000}~ và ~a_i = i~.

Sample Input 1

6 
3
1 1 2 3 4 5

Sample Output 1

66