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 |
|
|
| 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 |