6.B2. CTDL> bài Truy vấn mảng
Truy vấn mảng
Trong một buổi đàm phán kinh doanh, FullHouse Dev được đối tác đưa ra một bài toán thú vị về xử lý dữ liệu. Họ cần phải tính toán một hàm đặc biệt \(F(A, B)\) và thực hiện các thao tác hoán đổi trên hai mảng dữ liệu. Với tinh thần làm việc chuyên nghiệp, FullHouse Dev đã bắt tay vào giải quyết thử thách này.
Bài toán
Cho hai mảng \(A\) và \(B\) có độ dài lần lượt là \(N\) và \(M\). Định nghĩa hàm \(F(A, B)\) như sau:
[F(A, B) = \sum_{i=1}^N \sum_{j=1}^M A[i] \times B[j] \times (i + j)]
Bạn cần thực hiện \(Q\) truy vấn thuộc một trong ba loại sau:
- Hoán đổi \(A[i]\) và \(B[j]\)
- Hoán đổi \(A[i]\) và \(A[j]\)
- Hoán đổi \(B[i]\) và \(B[j]\)
INPUT FORMAT:
- Dòng đầu tiên chứa số nguyên \(T\) - số lượng test case
- Với mỗi test case:
- Dòng đầu chứa số nguyên \(N\)
- Dòng thứ hai chứa số nguyên \(M\)
- Dòng thứ ba chứa \(N\) số nguyên của mảng \(A\)
- Dòng thứ tư chứa \(M\) số nguyên của mảng \(B\)
- Dòng thứ năm chứa số nguyên \(Q\)
- \(Q\) dòng tiếp theo, mỗi dòng chứa ba số nguyên \(tp\), \(i\), \(j\) mô tả truy vấn
OUTPUT FORMAT:
- Với mỗi test case, in ra một dòng chứa \(Q + 1\) số nguyên: giá trị ban đầu của \(F(A, B)\) và giá trị sau mỗi truy vấn, lấy phần dư khi chia cho 998244353.
Ràng buộc:
- \(1 \leq T \leq 100\)
- \(1 \leq N, M \leq 10^5\)
- \(1 \leq A[i], B[i] \leq 10^9\)
- \(1 \leq Q \leq 10^5\)
- \(1 \leq tp \leq 3\)
- \(1 \leq i \leq N\) với \(tp = 1, 2\)
- \(1 \leq i \leq M\) với \(tp = 3\)
- \(1 \leq j \leq M\) với \(tp = 1\)
- \(1 \leq j \leq N\) với \(tp = 2\)
- \(1 \leq j \leq M\) với \(tp = 3\)
Comments