比赛 |
20110412pm |
评测结果 |
AWAWWWWWAA |
题目名称 |
拯救奶牛贝希 |
最终得分 |
40 |
用户昵称 |
苏轼 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-04-12 17:14:54 |
显示代码纯文本
#include <cstdio>
#include <cassert>
#include <algorithm>
using namespace std;
const int MAXM=10005;
pair<int,int> v[MAXM];
inline int getdis(int x1,int x2,int y1,int y2)
{
assert (y1/2==y2/2);
return (abs(x1-x2)-1)*2+((y1&1)?2:1)+((y2&1)?0:1);
}
int main()
{
freopen("rescuea.in","r",stdin);
freopen("rescuea.out","w",stdout);
int N,M;
int nx,ny;
scanf("%d%d",&N,&M);
scanf("%d%d",&nx,&ny);
nx--,ny--;
for(int i=0;i<M;i++)
{
scanf("%d%d",&v[i].first,&v[i].second);
v[i].first--;
v[i].second--;
}
sort(v,v+M);
int re=~0u>>1,rx,ry;
for(int i=0;i<M;i++)
{
int x1=v[i].first,y1=v[i].second;
int nre=0;
int x2=nx,y2=ny;
if (x1>x2)
{
swap(x1,x2);
swap(y1,y2);
}
if (x1==x2)
nre=abs(y1-y2);
else if (y1/2==y2/2)
nre=getdis(x1,x2,y1,y2);
else
if (y1<y2)
{
nre=(x2-x1)*2-((y2&1)==0)+(y2-(x2-x1)*2+((y2&1)==0));
}
else if (y1>y2)
{
nre=(y1/2-y2/2)*2-((y2&1)==0)+(x2-x1)*2+((y1&1)==0);
}
if (nre<re)
re=nre,rx=v[i].first,ry=v[i].second;
}
printf("%d %d\n",rx+1,ry+1);
printf("%d\n",re+1);
return 0;
}