# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
289738 |
2020-09-03T01:21:53 Z |
b00n0rp |
Ideal city (IOI12_city) |
C++17 |
|
215 ms |
19832 KB |
#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define F first
#define S second
#define pb push_back
const int MAXN = 100005;
const int MOD = 1000000000;
long long ans = 0;
int n;
pii a[MAXN];
set<int> adj[MAXN];
long long sz[MAXN],dist[MAXN],dp[MAXN];
int comp;
map<pair<int,int>,int> C;
void dfs(int u,int p){
for(auto v:adj[u]){
if(v != p){
dfs(v,u);
dp[v] += sz[v];
sz[u] += sz[v];
dp[u] += dp[v];
}
}
for(auto v:adj[u]){
if(v != p){
ans += dp[v]*(sz[u]-sz[v]);
}
}
}
void solve(){
C.clear();
for(int i = 0; i < MAXN; i ++){
adj[i].clear();
sz[i] = 0;
dp[i] = 0;
}
comp = 0;
sort(a,a+n);
C[a[0]] = 0;
int last = 0;
for(int i = 1; i < n; i++){
if(a[i].F == a[i-1].F and a[i].S == a[i-1].S+1){
C[a[i]] = comp;
}
else{
sz[comp] = i-last;
comp++;
last = i;
C[a[i]] = comp;
}
}
sz[comp] = n-last;
for(int i = 0; i < n; i++){
if(C.find({a[i].F-1,a[i].S}) != C.end()){
adj[C[{a[i].F-1,a[i].S}]].insert(C[{a[i].F,a[i].S}]);
adj[C[{a[i].F,a[i].S}]].insert(C[{a[i].F-1,a[i].S}]);
}
}
dfs(0,0);
}
int DistanceSum(int N, int *X, int *Y) {
n = N;
for(int i = 0; i < n; i ++){
a[i] = {X[i],Y[i]};
}
solve();
for(int i = 0; i < n; i ++){
a[i] = {Y[i],X[i]};
}
solve();
return ans%MOD;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
6528 KB |
Output is correct |
2 |
Correct |
5 ms |
6528 KB |
Output is correct |
3 |
Correct |
6 ms |
6528 KB |
Output is correct |
4 |
Correct |
6 ms |
6528 KB |
Output is correct |
5 |
Correct |
5 ms |
6528 KB |
Output is correct |
6 |
Correct |
5 ms |
6656 KB |
Output is correct |
7 |
Correct |
6 ms |
6656 KB |
Output is correct |
8 |
Correct |
6 ms |
6656 KB |
Output is correct |
9 |
Correct |
6 ms |
6656 KB |
Output is correct |
10 |
Correct |
6 ms |
6656 KB |
Output is correct |
11 |
Correct |
6 ms |
6656 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
6784 KB |
Output is correct |
2 |
Correct |
7 ms |
6656 KB |
Output is correct |
3 |
Correct |
8 ms |
6784 KB |
Output is correct |
4 |
Correct |
8 ms |
6784 KB |
Output is correct |
5 |
Correct |
8 ms |
6784 KB |
Output is correct |
6 |
Correct |
8 ms |
6784 KB |
Output is correct |
7 |
Correct |
10 ms |
6784 KB |
Output is correct |
8 |
Correct |
8 ms |
6784 KB |
Output is correct |
9 |
Correct |
8 ms |
6784 KB |
Output is correct |
10 |
Correct |
8 ms |
6816 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
41 ms |
8192 KB |
Output is correct |
2 |
Correct |
41 ms |
8312 KB |
Output is correct |
3 |
Correct |
104 ms |
10640 KB |
Output is correct |
4 |
Correct |
100 ms |
10744 KB |
Output is correct |
5 |
Correct |
205 ms |
14712 KB |
Output is correct |
6 |
Correct |
205 ms |
14712 KB |
Output is correct |
7 |
Correct |
215 ms |
14840 KB |
Output is correct |
8 |
Correct |
207 ms |
14544 KB |
Output is correct |
9 |
Correct |
205 ms |
15096 KB |
Output is correct |
10 |
Correct |
194 ms |
19832 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
39 ms |
8952 KB |
Output is correct |
2 |
Correct |
41 ms |
8952 KB |
Output is correct |
3 |
Correct |
99 ms |
12940 KB |
Output is correct |
4 |
Correct |
101 ms |
12280 KB |
Output is correct |
5 |
Correct |
198 ms |
19080 KB |
Output is correct |
6 |
Correct |
210 ms |
17016 KB |
Output is correct |
7 |
Correct |
201 ms |
19448 KB |
Output is correct |
8 |
Correct |
203 ms |
17016 KB |
Output is correct |
9 |
Correct |
206 ms |
16520 KB |
Output is correct |
10 |
Correct |
205 ms |
16504 KB |
Output is correct |