Submission #1867205
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
const int MX=100005,inf=0x3f3f3f3f;
typedef pair<int,int> pii;
#define fr first
#define se second
#define mp make_pair
#define pb push_back
typedef vector<int> vi;
int n,a,b;
map<int,set<pii> >x,y;
map<int,vi>xs,ys;
pii p[MX];
int vis[MX];
inline int dis(pii l,pii r){return max(abs(l.fr-r.fr),abs(l.se-r.se));}
inline void ins(int i){x[p[i].fr].insert(mp(p[i].se,i)),y[p[i].se].insert(mp(p[i].fr,i));}
inline void rem(int i){x[p[i].fr].erase(mp(p[i].se,i)),y[p[i].se].erase(mp(p[i].fr,i));}
int main(){
ios::sync_with_stdio(false);
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
int u,v;cin>>u>>v;
p[i].fr=u+v,p[i].se=u-v;
//cout<<p[i].fr<<' '<<p[i].se<<endl;
}
for(int i=1;i<=n;i++)ins(i);
deque<int>q;q.clear(),q.pb(a),q.pb(b);
vis[a]=1,vis[b]=1,rem(a),rem(b);
int D=dis(p[a],p[b]);
while(!q.empty()){
pii r=p[q.front()];q.pop_front();
map<int,set<pii> >::iterator s=x.find(r.fr-D);
if(s!=x.end()){
for(set<pii>::iterator i=s->se.lower_bound(mp(r.se-D,~inf));i!=s->se.end()&&i->fr<=r.se+D;i=s->se.erase(i)){
if(!vis[i->se])q.pb(i->se);
vis[i->se]=1;
}
}
s=x.find(r.fr+D);
if(s!=x.end()){
for(set<pii>::iterator i=s->se.lower_bound(mp(r.se-D,~inf));i!=s->se.end()&&i->fr<=r.se+D;i=s->se.erase(i)){
if(!vis[i->se])q.pb(i->se);
vis[i->se]=1;
}
}
s=y.find(r.se-D);
if(s!=y.end()){
for(set<pii>::iterator i=s->se.lower_bound(mp(r.fr-D,~inf));i!=s->se.end()&&i->fr<=r.fr+D;i=s->se.erase(i)){
if(!vis[i->se])q.pb(i->se);
vis[i->se]=1;
}
}
s=y.find(r.se+D);
if(s!=y.end()){
for(set<pii>::iterator i=s->se.lower_bound(mp(r.fr-D,~inf));i!=s->se.end()&&i->fr<=r.fr+D;i=s->se.erase(i)){
if(!vis[i->se])q.pb(i->se);
vis[i->se]=1;
}
}
}
//for(int i=1;i<=n;i++)cout<<vis[i]<<endl;
long long c=0;
for(int i=1;i<=n;i++)if(vis[i]){
xs[p[i].fr].pb(p[i].se);
ys[p[i].se].pb(p[i].fr);
}
for(map<int,vi>::iterator i=xs.begin();i!=xs.end();i++)sort(i->se.begin(),i->se.end());
for(map<int,vi>::iterator i=ys.begin();i!=ys.end();i++)sort(i->se.begin(),i->se.end());
for(int i=1;i<=n;i++){
map<int,vi>::iterator s=xs.find(p[i].fr-D);
c+=upper_bound(s->se.begin(),s->se.end(),p[i].se+D)-lower_bound(s->se.begin(),s->se.end(),p[i].se-D);
s=xs.find(p[i].fr+D);
c+=upper_bound(s->se.begin(),s->se.end(),p[i].se+D)-lower_bound(s->se.begin(),s->se.end(),p[i].se-D);
s=ys.find(p[i].se-D);
c+=lower_bound(s->se.begin(),s->se.end(),p[i].fr+D)-upper_bound(s->se.begin(),s->se.end(),p[i].fr-D);
s=ys.find(p[i].se+D);
c+=lower_bound(s->se.begin(),s->se.end(),p[i].fr+D)-upper_bound(s->se.begin(),s->se.end(),p[i].fr-D);
}
cout<<(c/2)<<endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
E - Manhattan Compass |
User |
CommonAnts |
Language |
C++14 (GCC 5.4.1) |
Score |
900 |
Code Size |
2771 Byte |
Status |
AC |
Exec Time |
480 ms |
Memory |
41216 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
900 / 900 |
Status |
|
|
Set Name |
Test Cases |
Sample |
subtask0_0.txt, subtask0_1.txt, subtask0_2.txt |
All |
subtask0_0.txt, subtask0_1.txt, subtask0_2.txt, subtask1_0.txt, subtask1_1.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_2.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_3.txt, subtask1_4.txt, subtask1_5.txt, subtask1_6.txt, subtask1_7.txt, subtask1_8.txt, subtask1_9.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_0.txt |
AC |
1 ms |
256 KB |
subtask0_1.txt |
AC |
1 ms |
256 KB |
subtask0_2.txt |
AC |
1 ms |
256 KB |
subtask1_0.txt |
AC |
210 ms |
27612 KB |
subtask1_1.txt |
AC |
205 ms |
27608 KB |
subtask1_10.txt |
AC |
420 ms |
25472 KB |
subtask1_11.txt |
AC |
76 ms |
10752 KB |
subtask1_12.txt |
AC |
93 ms |
19712 KB |
subtask1_13.txt |
AC |
94 ms |
19712 KB |
subtask1_14.txt |
AC |
480 ms |
39936 KB |
subtask1_15.txt |
AC |
77 ms |
10624 KB |
subtask1_16.txt |
AC |
233 ms |
28144 KB |
subtask1_17.txt |
AC |
228 ms |
27756 KB |
subtask1_18.txt |
AC |
182 ms |
11008 KB |
subtask1_19.txt |
AC |
77 ms |
10624 KB |
subtask1_2.txt |
AC |
377 ms |
41216 KB |
subtask1_20.txt |
AC |
245 ms |
28028 KB |
subtask1_21.txt |
AC |
236 ms |
28156 KB |
subtask1_22.txt |
AC |
181 ms |
11008 KB |
subtask1_23.txt |
AC |
184 ms |
11136 KB |
subtask1_24.txt |
AC |
233 ms |
28136 KB |
subtask1_3.txt |
AC |
146 ms |
11520 KB |
subtask1_4.txt |
AC |
253 ms |
27772 KB |
subtask1_5.txt |
AC |
248 ms |
27900 KB |
subtask1_6.txt |
AC |
211 ms |
11264 KB |
subtask1_7.txt |
AC |
140 ms |
11520 KB |
subtask1_8.txt |
AC |
93 ms |
19456 KB |
subtask1_9.txt |
AC |
230 ms |
27644 KB |