//#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define mp make_pair
#define pb push_back
#define a first
#define b second
#define endl '\n'
set<int> adj[100001];
const llo mod=1e9;
llo ans=0;
llo ss[100001];
llo tt[100001];
llo nn;
void dfs(int no,int par=-1){
ss[no]=tt[no];
for(auto j:adj[no]){
if(j!=par){
//cout<<no<<":"<<j<<endl;
dfs(j,no);
ans+=(nn-ss[j])*ss[j];
ans%=mod;
ss[no]+=ss[j];
}
}
}
void solve(vector<int> x ,vector<int> y){
int n=x.size();
nn=n;
//cout<<11<<endl;
vector<pair<int,int>> ss;
for(int i=0;i<n;i++){
ss.pb({x[i],y[i]});
}
sort(ss.begin(),ss.end());
int ind=0;
int cot=-1;
map<pair<int,int>,int> yy;
for(int i=0;i<n;i++){
adj[i].clear();
tt[i]=0;
}
while(ind<ss.size()){
cot++;
pair<int,int> cur=ss[ind];
while(ind<ss.size()){
if(ss[ind].a!=cur.a){
break;
}
if(ss[ind].b==cur.b){
tt[cot]++;
yy[ss[ind]]=cot;
cur.b+=1;
ind+=1;
}
else{
break;
}
}
}
for(int i=0;i<n;i++){
vector<int> zz={1,-1};
vector<int> zz2={0,0};
for(int j=0;j<2;j++){
pair<int,int> ne={ss[i].a+zz[j],ss[i].b+zz2[j]};
if(yy.find(ne)!=yy.end()){
adj[yy[ss[i]]].insert(yy[ne]);
adj[yy[ne]].insert(yy[ss[i]]);
}
}
}
dfs(0);
}
int DistanceSum(int n, int *xx, int *yy) {
//sort(xx.begin(),ss.end());
vector<int> x;
vector<int> y;
for(int i=0;i<n;i++){
x.pb(xx[i]);
y.pb(yy[i]);
}
solve(x,y);
solve(y,x);
return (int)ans;
}
Compilation message
city.cpp: In function 'void solve(std::vector<int>, std::vector<int>)':
city.cpp:46:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
46 | while(ind<ss.size()){
| ~~~^~~~~~~~~~
city.cpp:49:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
49 | while(ind<ss.size()){
| ~~~^~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
4972 KB |
Output is correct |
2 |
Correct |
4 ms |
4972 KB |
Output is correct |
3 |
Correct |
4 ms |
4972 KB |
Output is correct |
4 |
Correct |
4 ms |
5100 KB |
Output is correct |
5 |
Correct |
5 ms |
5100 KB |
Output is correct |
6 |
Correct |
4 ms |
5100 KB |
Output is correct |
7 |
Correct |
5 ms |
5100 KB |
Output is correct |
8 |
Correct |
4 ms |
5100 KB |
Output is correct |
9 |
Correct |
5 ms |
5100 KB |
Output is correct |
10 |
Correct |
4 ms |
5100 KB |
Output is correct |
11 |
Correct |
5 ms |
5100 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
5228 KB |
Output is correct |
2 |
Correct |
6 ms |
5228 KB |
Output is correct |
3 |
Correct |
8 ms |
5228 KB |
Output is correct |
4 |
Correct |
8 ms |
5356 KB |
Output is correct |
5 |
Correct |
9 ms |
5356 KB |
Output is correct |
6 |
Correct |
11 ms |
5356 KB |
Output is correct |
7 |
Correct |
8 ms |
5356 KB |
Output is correct |
8 |
Correct |
9 ms |
5356 KB |
Output is correct |
9 |
Correct |
9 ms |
5228 KB |
Output is correct |
10 |
Correct |
9 ms |
5228 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
62 ms |
7496 KB |
Output is correct |
2 |
Correct |
63 ms |
7496 KB |
Output is correct |
3 |
Correct |
162 ms |
10780 KB |
Output is correct |
4 |
Correct |
163 ms |
10780 KB |
Output is correct |
5 |
Correct |
335 ms |
16552 KB |
Output is correct |
6 |
Correct |
331 ms |
16468 KB |
Output is correct |
7 |
Correct |
329 ms |
16824 KB |
Output is correct |
8 |
Correct |
331 ms |
16312 KB |
Output is correct |
9 |
Correct |
343 ms |
16604 KB |
Output is correct |
10 |
Correct |
301 ms |
21724 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
57 ms |
8264 KB |
Output is correct |
2 |
Correct |
62 ms |
8136 KB |
Output is correct |
3 |
Correct |
143 ms |
12696 KB |
Output is correct |
4 |
Correct |
160 ms |
12060 KB |
Output is correct |
5 |
Correct |
294 ms |
20452 KB |
Output is correct |
6 |
Correct |
342 ms |
18088 KB |
Output is correct |
7 |
Correct |
294 ms |
20792 KB |
Output is correct |
8 |
Correct |
341 ms |
18232 KB |
Output is correct |
9 |
Correct |
318 ms |
17584 KB |
Output is correct |
10 |
Correct |
321 ms |
17592 KB |
Output is correct |