Bài 4: Thay Đổi Dãy (THT B Hà Tĩnh 2026)

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pypy 3, Python, Scratch
Điểm: 1600 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho một mảng \(a\) gồm \(n\) số nguyên.

\(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.

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, \dots, 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\).

Constraints

  • \(1 \le n \le 2 \cdot 10^5\)
  • \(0 \le q \le 2 \cdot 10^5\)
  • \(0 \le a_i \le 10^9\)
  • \(0 \le x \le 10^9\)
  • \(0 \le l \le r \le 10^9\)

Scoring

  • Subtask \(1\) (\(10\%\) số điểm): \(q = 0\).
  • Subtask \(2\) (\(20\%\) số điểm): \(n, q \le 2000\).
  • Subtask \(3\) (\(20\%\) số điểm): \(l = r \le 2 \cdot 10^5\)\(a_i, x \le 2 \cdot 10^5\).
  • Subtask \(4\) (\(10\%\) số điểm): \(l = r\).
  • Subtask \(5\) (\(20\%\) số điểm): \(x = 0\).
  • Subtask \(6\) (\(30\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
6 4
2 5 5 8 10 1
5 5 3
1 3 7
7 10 0
4 6 2
Output
31
27
46
0
0
Note

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\).

Test 2

Input
5 3
100 200 300 400 500
150 350 50
50 100 10
10 500 1
Output
1500
1100
930
5
Note

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\).

Bình luận (1)

Mới nhất
Tải bình luận...