VMSINCOS - Sin Cos Query

Giới hạn
  • Thời gian: 2.0s
  • Bộ nhớ: 1536MB
  • Mã nguồn: 50000 bytes

Ghi chú: Các bài VNOI đã được chuyển qua VNOJ (Thông báo). Đề bài trên VNOI và vn.spoj.com sẽ không được cập nhật nữa. Một số đề bài không chính xác sẽ chỉ được cập nhật trên VNOJ. Bạn vẫn có thể tìm kiếm đề bài trên VNOI.

Link đọc đề trên VNOJ

Cho một dãy số A gồm N số thực. Các phần tử của dãy được đánh số từ 1 đến N. Phần tử thứ i được kí hiệu là A[i]. Bạn cần thực hiện Q truy vấn trên dãy số, mỗi truy vấn thuộc một trong các dạng:

  • Modify u x : Gán A[u] = x
  • Mul u v x : Gán A[i] = A[i] * x, với i thuộc [u, v]
  • Sin u v x : Tính tổng: sin(A[u] - x) + sin(A[u+1] - x) + ... + sin(A[v] - x)
  • Cos u v x : Tính tổng: cos(A[u] - x) + cos(A[u+1] - x) + ... + cos(A[v] - x)
  • Reverse u v : Đảo ngược các phần tử từ u đến v. (Đổi chỗ a[u] và a[v], đổi chỗ a[u+1] và a[v-1], ...)

Chú ý: Các phép tính sin, cos được tính trên góc radian.

Input

  • Dòng 1: Số nguyên dương N
  • Dòng 2: N số thực, cách nhau bởi ít nhất 1 dấu cách
  • Dòng 3: Số nguyên dương Q - số truy vấn.
  • Q dòng tiếp, mỗi dòng là 1 truy vấn thuộc 1 trong các dạng trên.

Output

Với mỗi truy vấn thuộc dạng sin cos, in ra 1 số thực trên 1 dòng. Bài của bạn được tính là đúng nếu mỗi đáp án của bạn chênh lệch với đáp án của ban tổ chức không quá 10 -6

Giới hạn

  • Trong tất cả các test: 1 ≤ N, Q ≤ 50,000; tại mọi thời điểm, - π ≤ A[i], x ≤ π . Trong mỗi truy vấn, u ≤ v
  • Trong 20% test đầu tiên, 1 ≤ N, Q ≤ 5000
  • Trong 20% test tiếp theo, không có truy vấn dạng Mul và Reverse
  • Trong 20% test tiếp theo, không có truy vấn dạng Mul
  • Trong 20% test tiếp theo, không có truy vấn dạng Reverse. Trong các truy vấn Sin và Cos, x luôn bằng 0
  • Trong 20% test cuối cùng, không có thêm rằng buộc nào.

Chấm bài

Bài của bạn sẽ được chấm trên thang điểm 100. Điểm mà bạn nhận được sẽ tương ứng với % test mà bạn giải đúng.

Trong quá trình thi, bài của bạn sẽ chỉ được chấm với 1 test ví dụ có trong đề bài.

Khi vòng thi kết thúc, bài của bạn sẽ được chấm với bộ test đầy đủ.

Example

Input:
7
0.117 0.026 0.773 -0.786 -0.127 -0.821 -0.343
15
Mul 2 2 0.500
Sin 1 6 0.744
Modify 4 0.123
Sin 2 5 0.741
Sin 1 4 0.247
Mul 2 2 1.200
Mul 2 2 0.700
Cos 1 6 0.074
Sin 2 7 0.677
Modify 2 0.463
Sin 1 5 -0.444
Reverse 3 7
Sin 2 6 -0.143
Modify 3 -0.317
Sin 3 7 -0.657

Output:
-3.989461096
-1.975827413
0.016891107
5.366758756
-3.617745878
3.106577699
0.022551888
2.369138582


  • Người up: voj
  • Nguồn bài: VM13 - Nguyễn Thành Trung