#include<bits/stdc++.h>
using namespace std;
const int64_t MOD = 1e9;
int64_t n;
map<int64_t, vector<int64_t>>lin, col;
int64_t solve(map<int64_t, vector<int64_t>>& mp) {
// vector<vector<int64_t>>T;
// map<pair<int64_t, int64_t>, int64_t>id;
// vector<int64_t>s;
// int64_t cnt = 0, idx = 0;
//
// for (auto &[v, ap] : mp) {
// sort(ap.begin(), ap.end());
// ++idx;
//
// for (int64_t i = 0; i < ap.size(); ++i) {
// if (i == 0 || ap[i] != ap[i - 1] + 1) {
// ++cnt;
// T.push_back({});
// s.push_back(0);
// }
//
// id[{v, ap[i]}] = cnt;
// ++s.back();
//
// if (idx != 1 && id.find({v - 1, ap[i]}) != id.end() && (T[cnt].empty() || id[{v - 1, ap[i]}]) != T[cnt].back()) {
// T[cnt].push_back(id[{v - 1, ap[i]}]);
// T[id[{v - 1, ap[i]}]].push_back(cnt);
// }
// }
// }
//
// vector<int64_t>SZ(cnt + 1, 0);
// int64_t ans = 0;
//
// function<void(int64_t, int64_t)> dfs = [&](int64_t nod, int64_t p) {
// SZ[nod] = s[nod] - 1;
//
// for (int64_t &son : T[nod]) {
// if (son == p) continue;
//
// dfs(son, nod);
// SZ[nod] += SZ[son];
// ans += (n - SZ[son]) * SZ[son];
// }
// };
// dfs(0, -1);
return 0;
}
int DistanceSum(int N, int *X, int *Y) {
n = N;
for (int64_t i = 0; i < n; ++i) {
col[X[i]].push_back(Y[i]);
lin[Y[i]].push_back(X[i]);
}
return (solve(lin) + solve(col)) % MOD;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |