# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
597479 | 2022-07-16T05:48:04 Z | Hanksburger | 이상적인 도시 (IOI12_city) | C++17 | 61 ms | 10672 KB |
#include <bits/stdc++.h> using namespace std; vector<pair<pair<int, int>, int> > b[100005]; vector<int> adj[100005], w; vector<pair<int, int> > a; long long ans; int n; long long dfs(int u, int p) { long long sum=w[u]; for (int v:adj[u]) { if (v!=p) { long long x=dfs(v, u); ans=(ans+x*(n-x))%1000000000; sum+=x; } } return sum; } int DistanceSum(int N, int *X, int *Y) { n=N; for (int z=0; z<2; z++) { int mn=2147483647, sz=0, cnt=0; for (int i=0; i<n; i++) { mn=min(mn, X[i]); sz=max(sz, X[i]); } sz-=mn; for (int i=0; i<n; i++) a.push_back({X[i]-mn, Y[i]}); sort(a.begin(), a.end()); for (int i=0; i<n; ) { int ind=i+1; while (ind<n && a[i].first==a[ind].first && a[ind-1].second+1==a[ind].second) ind++; w.push_back(a[ind-1].second-a[i].second+1); b[a[i].first].push_back({{a[i].second, a[ind-1].second}, cnt++}); i=ind; } for (int i=0; i<sz; i++) { int ind=0; for (int j=0; j<b[i].size(); j++) { while (ind<b[i+1].size() && b[i+1][ind].first.second<b[i][j].first.first) ind++; while (ind<b[i+1].size() && b[i+1][ind].first.first<=b[i][j].first.second) { int u=b[i][j].second, v=b[i+1][ind].second; adj[u].push_back(v); adj[v].push_back(u); ind++; } ind=max(0, ind-1); } } dfs(0, 0); for (int i=0; i<n; i++) swap(X[i], Y[i]); a.clear(); w.clear(); for (int i=0; i<=sz; i++) b[i].clear(); for (int i=0; i<cnt; i++) adj[i].clear(); } return ans; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 4948 KB | Output is correct |
2 | Correct | 3 ms | 4948 KB | Output is correct |
3 | Correct | 3 ms | 5004 KB | Output is correct |
4 | Correct | 2 ms | 4948 KB | Output is correct |
5 | Correct | 3 ms | 5000 KB | Output is correct |
6 | Correct | 3 ms | 4948 KB | Output is correct |
7 | Correct | 4 ms | 4948 KB | Output is correct |
8 | Correct | 3 ms | 4948 KB | Output is correct |
9 | Correct | 3 ms | 5004 KB | Output is correct |
10 | Correct | 3 ms | 4948 KB | Output is correct |
11 | Correct | 4 ms | 4948 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 4948 KB | Output is correct |
2 | Correct | 3 ms | 4948 KB | Output is correct |
3 | Correct | 3 ms | 5076 KB | Output is correct |
4 | Correct | 3 ms | 5076 KB | Output is correct |
5 | Correct | 3 ms | 5076 KB | Output is correct |
6 | Correct | 3 ms | 5076 KB | Output is correct |
7 | Correct | 4 ms | 5076 KB | Output is correct |
8 | Correct | 4 ms | 5076 KB | Output is correct |
9 | Correct | 3 ms | 4948 KB | Output is correct |
10 | Correct | 3 ms | 4948 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 11 ms | 5588 KB | Output is correct |
2 | Correct | 10 ms | 5588 KB | Output is correct |
3 | Correct | 26 ms | 6104 KB | Output is correct |
4 | Correct | 26 ms | 6104 KB | Output is correct |
5 | Correct | 44 ms | 6996 KB | Output is correct |
6 | Correct | 38 ms | 6904 KB | Output is correct |
7 | Correct | 38 ms | 6996 KB | Output is correct |
8 | Correct | 41 ms | 6892 KB | Output is correct |
9 | Correct | 44 ms | 6988 KB | Output is correct |
10 | Correct | 48 ms | 10672 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 17 ms | 5992 KB | Output is correct |
2 | Correct | 11 ms | 5924 KB | Output is correct |
3 | Correct | 27 ms | 7468 KB | Output is correct |
4 | Correct | 25 ms | 7004 KB | Output is correct |
5 | Correct | 50 ms | 9856 KB | Output is correct |
6 | Correct | 42 ms | 8476 KB | Output is correct |
7 | Correct | 61 ms | 9768 KB | Output is correct |
8 | Correct | 53 ms | 8480 KB | Output is correct |
9 | Correct | 43 ms | 8008 KB | Output is correct |
10 | Correct | 51 ms | 8040 KB | Output is correct |