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
AC × 3
AC × 28
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