제출 #1242775

#제출 시각아이디문제언어결과실행 시간메모리
1242775domi이상적인 도시 (IOI12_city)C++20
컴파일 에러
0 ms0 KiB
#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 ans; } int64_t DistanceSum(int64_t N, int64_t *X, int64_t *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; }

컴파일 시 표준 에러 (stderr) 메시지

/usr/bin/ld: /tmp/ccyy4cPd.o: in function `main':
grader.cpp:(.text.startup+0x104): undefined reference to `DistanceSum(int, int*, int*)'
collect2: error: ld returned 1 exit status