Submission #9798110


Source Code Expand

#include<iostream>
#include<string.h>
#include<string>
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<math.h>
#include<queue>
#include<set>
#include<map>
using namespace std;
typedef long long ll;
typedef long double db;
typedef pair<int,int> pii;
const int N=100000;
const db pi=acos(-1.0);
#define lowbit(x) (x)&(-x)
#define sqr(x) (x)*(x)
#define rep(i,a,b) for (register int i=a;i<=b;i++)
#define per(i,a,b) for (register int i=a;i>=b;i--)
#define go(u,i) for (register int i=head[u];i;i=sq[i].nxt)
#define fir first
#define sec second
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define maxd 998244353
#define eps 1e-8
struct node{int to,nxt;}sq[1000200];
int all=0,head[100100];
int n,m,d[100100],dis,a,b;
ll ans=0;
bool vis[100100];
struct pnode{int x,y,id;}p[100100];
bool operator <(pnode p,pnode q) 
{
	return ((p.x<q.x) || ((p.x==q.x) && (p.y<q.y)));
}

int read()
{
    int x=0,f=1;char ch=getchar();
    while ((ch<'0') || (ch>'9')) {if (ch=='-') f=-1;ch=getchar();}
    while ((ch>='0') && (ch<='9')) {x=x*10+(ch-'0');ch=getchar();}
    return x*f;
}

void add(int u,int v)
{
	all++;sq[all].to=v;sq[all].nxt=head[u];head[u]=all;
}

void solve(int nowd)
{
	sort(p+1,p+1+n);
	int l=1,r=0,pos=1;
	rep(i,1,n)
	{
		while ((l<n) && ((p[i].x-dis>p[l].x) || ((p[i].x-dis==p[l].x) && (p[i].y-nowd>p[l].y)))) l++;
		while ((r<n) && ((p[i].x-dis>p[r+1].x) || ((p[i].x-dis==p[r+1].x) && (p[i].y+nowd>=p[r+1].y)))) r++;
		d[p[i].id]+=r-l+1;pos=max(pos,l);
		while (pos<=r) 
		{
			add(p[i].id,p[pos].id);add(p[pos].id,p[i].id);
			pos++;
		}
		pos--;
	}
}

void dfs(int u)
{
	ans+=d[u];vis[u]=1;
	go(u,i)
	{
		int v=sq[i].to;
		if (!vis[v]) dfs(v);
	}
}

int main()
{
	n=read();a=read();b=read();
	rep(i,1,n) 
	{
		int x=read(),y=read();
		p[i]=(pnode){x+y,x-y,i};
	}
	dis=max(abs(p[a].x-p[b].x),abs(p[a].y-p[b].y));
	solve(dis);
	rep(i,1,n) swap(p[i].x,p[i].y);
	solve(dis-1);
	dfs(a);
	printf("%lld",ans);
	return 0;
}

Submission Info

Submission Time
Task E - Manhattan Compass
User encodetalker
Language C++14 (GCC 5.4.1)
Score 900
Code Size 2048 Byte
Status AC
Exec Time 41 ms
Memory 9856 KiB

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 2 ms 2304 KiB
subtask0_1.txt AC 2 ms 2304 KiB
subtask0_2.txt AC 2 ms 2304 KiB
subtask1_0.txt AC 31 ms 4352 KiB
subtask1_1.txt AC 27 ms 4352 KiB
subtask1_10.txt AC 40 ms 7168 KiB
subtask1_11.txt AC 26 ms 4224 KiB
subtask1_12.txt AC 27 ms 4224 KiB
subtask1_13.txt AC 27 ms 4224 KiB
subtask1_14.txt AC 38 ms 4992 KiB
subtask1_15.txt AC 26 ms 4224 KiB
subtask1_16.txt AC 29 ms 4480 KiB
subtask1_17.txt AC 29 ms 4480 KiB
subtask1_18.txt AC 39 ms 9856 KiB
subtask1_19.txt AC 26 ms 4224 KiB
subtask1_2.txt AC 41 ms 5120 KiB
subtask1_20.txt AC 31 ms 4736 KiB
subtask1_21.txt AC 29 ms 4608 KiB
subtask1_22.txt AC 38 ms 9856 KiB
subtask1_23.txt AC 32 ms 7552 KiB
subtask1_24.txt AC 29 ms 4480 KiB
subtask1_3.txt AC 29 ms 6656 KiB
subtask1_4.txt AC 31 ms 4736 KiB
subtask1_5.txt AC 29 ms 4608 KiB
subtask1_6.txt AC 39 ms 9728 KiB
subtask1_7.txt AC 36 ms 9088 KiB
subtask1_8.txt AC 26 ms 4224 KiB
subtask1_9.txt AC 29 ms 4480 KiB