比赛 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;
}