Đ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

Khôi phục dãy số

100 điểm

Vào ngày Quốc tế Thiếu nhi, một đứa trẻ đã đến nhà của Picks và làm rối tung mọi thứ. Picks rất tức giận, bởi nhiều vật quan trọng đã biến mất, trong đó có dãy số yêu thích của anh ấy.

May mắn thay, Picks vẫn nhớ cách khôi phục lại dãy số. Ban đầu, anh ấy tạo ra một mảng số nguyên \(a[1], a[2], \ldots, a[n]\). Sau đó, anh ấy thực hiện \(m\) thao tác trên mảng này. Mỗi thao tác có thể là một trong ba loại sau:

  • In tổng: 1 l r --- Picks muốn biết tổng các phần tử trong đoạn từ \(l\) đến \(r\) (tức là \(\sum\limits_{i=l}^{r} a[i]\)).
  • Lấy dư: 2 l r x --- Với mỗi \(i\) trong đoạn \([l, r]\), thay \(a[i]\) bằng \(a[i] \bmod x\).
  • Gán giá trị: 3 k x --- Gán giá trị \(a[k] := x\).

Bạn hãy giúp Picks thực hiện tất cả các thao tác, và in ra đáp án tương ứng với các thao tác loại 1.

Input

  • Dòng đầu tiên chứa hai số nguyên \(n, m\) \((1 \le n, m \le 10^5)\) --- số phần tử ban đầu và số thao tác cần thực hiện.
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) \((1 \le a_i \le 10^9)\) --- các phần tử ban đầu của mảng.
  • Mỗi dòng trong số \(m\) dòng tiếp theo là một thao tác, theo một trong các định dạng sau:

  • 1 $l$ $r$ \((1 \le l \le r \le n)\) --- thao tác loại 1 (in tổng đoạn).

  • 2 $l$ $r$ $x$ \((1 \le l \le r \le n, 1 \le x \le 10^9)\) --- thao tác loại 2 (lấy dư đoạn).
  • 3 $k$ $x$ \((1 \le k \le n, 1 \le x \le 10^9)\) --- thao tác loại 3 (gán giá trị tại vị trí).

Output

Với mỗi thao tác loại 1, in ra một dòng chứa tổng các phần tử trong đoạn tương ứng. Chú ý: Tổng này có thể vượt quá giới hạn của số nguyên 32-bit.

Example

Test 1

Input
5 5
1 2 3 4 5
2 3 5 4
3 3 5
1 2 5
2 1 3 3
1 1 3
Output
8
5

Test 2

Input
10 10
6 9 6 7 6 1 10 10 9 5
1 3 9
2 7 10 9
2 5 10 8
1 4 7
3 3 7
2 7 9 9
1 2 4
1 6 6
1 5 9
3 1 10
Output
49
15
23
1
9

Scoring

  • Có \(30\%\) số điểm có \(n, m \leq 1000\).
  • Có \(30\%\) số điểm trong các test không có truy vấn loại \(2\).
  • \(40\%\) số điểm không có ràng buộc gì thêm.

root

Cung cấp nhu yếu phẩm

100 điểm

Thành phố \(S\) có \(N\) thị trấn nhỏ, thị trấn \(i\) có \(C[i]\) người dân sinh sống và giữa 2 thành phố có tối đa một con đường một chiều đi từ thành phố này đến thành phố kia.
Hiện nay thành phố đang chịu ảnh hưởng nghiêm trọng của dịch bệnh, mỗi người dân bị hạn chế đi ra ngoài, bởi vậy nên chính quyền thành phố phải cử bộ đội đi cung cấp nhu yếu phẩm cho mọi người. Giả sử các anh bộ đội xuất phát tại thị trấn \(i\), họ sẽ thông qua những con đường một chiều để đi đến những thị trấn khác, thăm và phát nhu yếu phẩm cho tất cả người dân sinh sống trên thị trấn họ đi qua (lưu ý: mỗi người dân chỉ được thăm và phát nhu yếu phẩm 1 lần).

Yêu cầu đặt ra là với mỗi thị trấn xuất phát, thì có thể thăm và phát nhu yếu phẩm cho tối đa bao nhiêu người dân?

Input

  • Dòng đầu tiên gồm 2 số \(N\) và \(M\), tương ứng số thị trấn trong thành phố \(S\), và số con đường một chiều

  • Dòng tiếp theo gồm \(N\) số nguyên tương ứng số dân sinh sống tại từng thị trấn

  • \(M\) dòng tiếp theo, mỗi dòng gồm 2 số \(u\) và \(v\), tương ứng có con đường từ thị trấn \(u\) đến thị trấn \(v\)

Output

  • Gồm một dòng duy nhất ghi \(N\) số nguyên, số thứ \(u\) tương ứng với số người dân tối đa có thể được thăm và phát nhu yếu phẩm nếu như xuất phát tại thị trấn \(u\). Các số cách nhau bởi 1 khoảng trắng.

Example

Test 1

Input
7 8
1 2 3 4 5 6 7
1 2
2 3
3 4
4 5
5 2
5 6
5 7
4 7
Output
22 21 21 21 21 6 7 

Scoring

  • \(30\%\) số tests có \(1 \le N, M \le 1000\)

  • \(70\%\) số tests có \(1 \le N, M \le 100000\)

root

Sắp xếp giảm dần

100 điểm

Viết chương trình nhập vào một dãy \(a\) gồm \(N\) số nguyên. Hãy sắp xếp các phần tử trong mảng theo thứ tự giảm dần và in ra màn hình.

Input

  • Dòng đầu tiên là số nguyên dương \(N\) (\(1 \leq N \leq 10^5\)).
  • Dòng thứ hai là \(N\) số nguyên \(a_1, a_2, ..., a_n\) (\(-10^9 \leq a_i \leq 10^9\)), mỗi số cách nhau một dấu cách.

Output

Một dòng duy nhất chứa \(N\) số nguyên đã được sắp xếp giảm dần, cách nhau một dấu cách.

Example

Test 1

Input
5
4 3 3 2 5
Output
5 4 3 3 2 

root

Tính gạch

100 điểm

Mỗi hộ dân ở khu làng sinh thái Đông Triệu Phong được cung cấp vật liệu để xây dựng một căn nhà cấp \(4\) có sàn là HCN kích thước \((x, y)\) đơn vị mét. Tường xây cao \(z\) mét, nóc cao \(t\) mét (tính từ sàn). Ban quản lý muốn biết cần cung cấp cho mỗi hộ bao nhiêu viên gạch để xây \(4\) bức tường. Biết rằng theo định mức xây dựng số gạch được tính \(39\) viên\(/m^2\). Giả sử rằng người ta không tính đến diện tích phần làm cửa.

\begincenter

\endcenter

Bạn hãy lập trình giúp cho bản quản lý dự án tính số lượng viên gạch ít nhất cần cung cấp cho các hộ dân. Đáp án in ra màn hình là một số nguyên \(S\) (là số lượng viên gạch cần cung cấp cho các hộ dân). Đáp án của bạn được chấm đúng nếu sai lệch không quá \(1\) viên so với đáp án của ban tổ chức.

Input

Gồm một dòng chứa \(4\) số nguyên \(x, y, z, t\) cách nhau dấu cách \((1 \leq x, y, z, t \leq 20)\).

Output

in ra số viên gạch cung cấp cho hộ dân này

Example

Test 1

Input
1 1 1 1
Output
156
Xem thêm