Submission #593285

# Submission time Handle Problem Language Result Execution time Memory
593285 2022-07-10T19:09:39 Z skittles1412 Ideal city (IOI12_city) C++17
100 / 100
111 ms 17700 KB
#include "bits/extc++.h"

using namespace std;

template <typename T>
void dbgh(const T& t) {
    cerr << t << endl;
}

template <typename T, typename... U>
void dbgh(const T& t, const U&... u) {
    cerr << t << " | ";
    dbgh(u...);
}

#ifdef DEBUG
#define dbg(...)                                              \
    cerr << "L" << __LINE__ << " [" << #__VA_ARGS__ << "]: "; \
    dbgh(__VA_ARGS__);
#else
#define dbg(...)
#define cerr   \
    if (false) \
    cerr
#endif

#define endl "\n"
#define long int64_t
#define sz(x) int((x).size())

const long mod = 1e9;
const int maxn = 1e5 + 5;

long ans = 0;
int asiz[maxn], siz[maxn];
vector<int> graph[maxn];

void pdfs(int u, int p = -1) {
    siz[u] = asiz[u];
    for (auto& v : graph[u]) {
        if (v != p) {
            pdfs(v, u);
            siz[u] += siz[v];
        }
    }
}

void dfs(int u, int p = -1) {
    for (auto& v : graph[u]) {
        if (v != p) {
            ans += long(siz[0] - siz[v]) * siz[v];
            dfs(v, u);
        }
    }
}

long solve(int n, int *arrx, int *arry) {
    ans = 0;
    memset(asiz, 0, sizeof(asiz));
    memset(siz, 0, sizeof(siz));
    for (int i = 0; i < n; i++) {
        graph[i].clear();
    }
    map<int, vector<int>> m;
    for (int i = 0; i < n; i++) {
        m[arrx[i]].push_back(arry[i]);
    }
    int cind = 0;
    map<pair<int, int>, int> xtcomp;
    for (auto& [k, v] : m) {
        sort(begin(v), end(v));
        for (int l = 0, r = 0; l < sz(v); l = r) {
            for (; r < sz(v) && v[r] - r == v[l] - l; r++) {
                xtcomp[{k, v[r]}] = cind;
                asiz[cind]++;
                auto it = xtcomp.find({k - 1, v[r]});
                if (it != xtcomp.end()) {
                    int u = it->second;
                    if (!sz(graph[u]) || graph[u].back() != cind) {
                        graph[u].push_back(cind);
                        graph[cind].push_back(u);
                    }
                }
            }
            cind++;
        }
    }
    pdfs(0);
    dfs(0);
    return ans;
}

int DistanceSum(int n, int *arrx, int *arry) {
    return (solve(n, arrx, arry) + solve(n, arry, arrx)) % mod;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3412 KB Output is correct
2 Correct 2 ms 3412 KB Output is correct
3 Correct 2 ms 3428 KB Output is correct
4 Correct 2 ms 3412 KB Output is correct
5 Correct 2 ms 3412 KB Output is correct
6 Correct 2 ms 3412 KB Output is correct
7 Correct 2 ms 3412 KB Output is correct
8 Correct 2 ms 3412 KB Output is correct
9 Correct 2 ms 3420 KB Output is correct
10 Correct 2 ms 3412 KB Output is correct
11 Correct 2 ms 3412 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 3412 KB Output is correct
2 Correct 3 ms 3432 KB Output is correct
3 Correct 4 ms 3564 KB Output is correct
4 Correct 3 ms 3540 KB Output is correct
5 Correct 3 ms 3540 KB Output is correct
6 Correct 3 ms 3540 KB Output is correct
7 Correct 3 ms 3568 KB Output is correct
8 Correct 3 ms 3592 KB Output is correct
9 Correct 3 ms 3560 KB Output is correct
10 Correct 3 ms 3540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 19 ms 5204 KB Output is correct
2 Correct 19 ms 5184 KB Output is correct
3 Correct 47 ms 7640 KB Output is correct
4 Correct 47 ms 7808 KB Output is correct
5 Correct 98 ms 11980 KB Output is correct
6 Correct 96 ms 12092 KB Output is correct
7 Correct 83 ms 12300 KB Output is correct
8 Correct 93 ms 11960 KB Output is correct
9 Correct 92 ms 12236 KB Output is correct
10 Correct 111 ms 17700 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 18 ms 5548 KB Output is correct
2 Correct 17 ms 5472 KB Output is correct
3 Correct 45 ms 8404 KB Output is correct
4 Correct 43 ms 8224 KB Output is correct
5 Correct 101 ms 13360 KB Output is correct
6 Correct 90 ms 12696 KB Output is correct
7 Correct 107 ms 13772 KB Output is correct
8 Correct 88 ms 12620 KB Output is correct
9 Correct 83 ms 12356 KB Output is correct
10 Correct 84 ms 12288 KB Output is correct