#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2e3 + 5, mod = 998244353;
int a[maxn], b[maxn], pre[maxn][maxn], suf[maxn][maxn];
signed main(){
int n, i, j;
int T;
cin >> n;
for(i = 1; i <= n; i++){
cin >> a[i];
}
for(i = 1; i <= n; i++){
cin >> b[i];
}
sort(a + 1, a + n + 1);
sort(b + 1, b + n + 1);
for(i = 0; i <= n; i++){
pre[0][i] = pre[i][0] = 1;
}
for(i = n + 1; i >= 1; i--){
suf[n + 1][i] = suf[i][n + 1] = 1;
}
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++){
pre[i][j] = (pre[i - 1][j] + pre[i][j - 1]) % mod;
}
}
for(i = n; i >= 1; i--){
for(j = n; j >= 1; j--){
suf[i][j] = (suf[i + 1][j] + suf[i][j + 1]) % mod;
}
}
int res = 0;
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++){
res = (res + abs(a[i] - b[j]) * pre[i - 1][j - 1] % mod * suf[i + 1][j + 1] % mod) % mod;
}
}
cout << res;
return 0;
}
动态规划(集合相关)
最新推荐文章于 2024-06-13 10:13:20 发布