# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
519107 |
2022-01-25T16:36:33 Z |
AdamGS |
Ideal city (IOI12_city) |
C++17 |
|
70 ms |
9540 KB |
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define rep(a, b) for(int a = 0; a < (b); ++a)
#define st first
#define nd second
#define pb push_back
#define all(a) a.begin(), a.end()
const int LIM=1e5+7;
const ll MOD=1e9;
vector<int>V[LIM];
pair<int,int>T[LIM];
map<int,int>mp;
ll F[LIM], ile[LIM], n, ans;
int fnd(int x) {
if(F[x]==x) return x;
return F[x]=fnd(F[x]);
}
void uni(int a, int b) {
if(fnd(a)==fnd(b)) return;
ile[fnd(a)]+=ile[fnd(b)];
F[fnd(b)]=fnd(a);
}
ll DFS(int x, int o) {
ll s=ile[x];
for(auto i : V[x]) if(i!=o) s+=DFS(i, x);
ans+=s*(n-s);
ans%=MOD;
return s;
}
int DistanceSum(int N, int *X, int *Y) {
n=N;
rep(i, n) T[i]={X[i], Y[i]};
rep(j, 2) {
mp.clear();
rep(i, n) {
swap(T[i].st, T[i].nd);
F[i]=i;
ile[i]=1;
V[i].clear();
}
sort(T, T+n);
rep(i, n-1) {
if(T[i].st==T[i+1].st && T[i].nd+1==T[i+1].nd) uni(i, i+1);
}
rep(i, n) {
int x=mp[T[i].nd]-1;
if(x>=0 && T[x].st==T[i].st-1 && (!V[fnd(i)].size() || V[fnd(i)].back()!=fnd(x))) {
V[fnd(i)].pb(fnd(x));
V[fnd(x)].pb(fnd(i));
}
mp[T[i].nd]=i+1;
}
DFS(fnd(0), fnd(0));
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2636 KB |
Output is correct |
2 |
Correct |
2 ms |
2636 KB |
Output is correct |
3 |
Correct |
1 ms |
2636 KB |
Output is correct |
4 |
Correct |
1 ms |
2636 KB |
Output is correct |
5 |
Correct |
2 ms |
2636 KB |
Output is correct |
6 |
Correct |
2 ms |
2636 KB |
Output is correct |
7 |
Correct |
2 ms |
2556 KB |
Output is correct |
8 |
Correct |
2 ms |
2636 KB |
Output is correct |
9 |
Correct |
2 ms |
2636 KB |
Output is correct |
10 |
Correct |
2 ms |
2636 KB |
Output is correct |
11 |
Correct |
2 ms |
2664 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2656 KB |
Output is correct |
2 |
Correct |
2 ms |
2636 KB |
Output is correct |
3 |
Correct |
2 ms |
2664 KB |
Output is correct |
4 |
Correct |
3 ms |
2636 KB |
Output is correct |
5 |
Correct |
4 ms |
2764 KB |
Output is correct |
6 |
Correct |
3 ms |
2764 KB |
Output is correct |
7 |
Correct |
3 ms |
2796 KB |
Output is correct |
8 |
Correct |
3 ms |
2764 KB |
Output is correct |
9 |
Correct |
2 ms |
2764 KB |
Output is correct |
10 |
Correct |
3 ms |
2764 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
10 ms |
3404 KB |
Output is correct |
2 |
Correct |
10 ms |
3440 KB |
Output is correct |
3 |
Correct |
25 ms |
4728 KB |
Output is correct |
4 |
Correct |
22 ms |
4676 KB |
Output is correct |
5 |
Correct |
53 ms |
6612 KB |
Output is correct |
6 |
Correct |
45 ms |
6620 KB |
Output is correct |
7 |
Correct |
49 ms |
6912 KB |
Output is correct |
8 |
Correct |
50 ms |
6572 KB |
Output is correct |
9 |
Correct |
45 ms |
6884 KB |
Output is correct |
10 |
Correct |
53 ms |
9540 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
14 ms |
3928 KB |
Output is correct |
2 |
Correct |
14 ms |
3780 KB |
Output is correct |
3 |
Correct |
33 ms |
5684 KB |
Output is correct |
4 |
Correct |
31 ms |
5336 KB |
Output is correct |
5 |
Correct |
67 ms |
8660 KB |
Output is correct |
6 |
Correct |
60 ms |
7656 KB |
Output is correct |
7 |
Correct |
70 ms |
8784 KB |
Output is correct |
8 |
Correct |
57 ms |
7644 KB |
Output is correct |
9 |
Correct |
55 ms |
7364 KB |
Output is correct |
10 |
Correct |
55 ms |
7280 KB |
Output is correct |