Chia đôi và tính tổng

Đề bài

Mô tả

Cho một mảng a gồm 2n số nguyên. Xét mọi cách chia mảng a thành hai dãy con pq, mỗi dãy có đúng n phần tử (mỗi phần tử của a thuộc đúng một trong hai dãy).

Sắp xếp p theo thứ tự không giảm được dãy x, sắp xếp q theo thứ tự không tăng được dãy y. Chi phí của một cách chia được định nghĩa là:

f(p,q)=i=1n|xiyi|

Hãy tính tổng f(p,q) trên tất cả các cách chia hợp lệ. Vì kết quả có thể rất lớn, in ra phần dư khi chia cho 998244353.

Hai cách chia được coi là khác nhau nếu tập chỉ số của các phần tử được chọn vào dãy p là khác nhau.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • Dòng thứ hai chứa 2n số nguyên a1,a2,,a2n.

Dữ liệu ra

  • Một số nguyên duy nhất: tổng f(p,q) trên mọi cách chia hợp lệ, lấy phần dư khi chia cho 998244353.

Ràng buộc

  • 1n150000
  • 1ai109

Ví dụ

Input Output Giải thích
1
1 4
6 Có hai cách chia: p=[1],q=[4] cho f=3; và p=[4],q=[1] cho f=3. Tổng bằng 6.
2
2 1 2 1
12 (42)=6 cách chia, mỗi cách đều cho chi phí 2, nên tổng bằng 12.
3
2 2 2 2 2 2
0 Mọi phần tử bằng nhau nên mọi chi phí đều bằng 0.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0