比赛 NOIP模拟赛by mzx Day1 评测结果 AAAAAAAAAE
题目名称 为爱追寻 最终得分 90
用户昵称 夕见ai 运行时间 5.612 s
代码语言 C++ 内存使用 76.59 MiB
提交时间 2016-10-19 21:42:07
显示代码纯文本
#include<cstdio>
using namespace std;
int a[2501][2501]={0},b[2501][2501]={0},c[2501][2501]={0},d[2501][2501]={0},n,x0,y0,xt,yt,s=0;
bool love=0;
void check(int x,int y){
	if(x>=0){
		if(y>=0){
			if(a[x][y]==0||a[x][y]==2){
				s++;
				if(a[x][y]==0){
					a[x][y]=1;
					return;}
			    if(a[x][y]==2){
					love=1;
				    return;}}}
		if(y<0){
			if(d[x][-y]==0||d[x][-y]==2){
				s++;
				if(d[x][-y]==0){
					d[x][-y]=1;
					return;}
			    if(d[x][-y]==2){
					love=1;
				    return;}}}
	}
	if(x<0){
		if(y>=0){
			if(b[-x][y]==0||b[-x][y]==2){
				s++;
				if(b[-x][y]==0){
					b[-x][y]=1;
					return;}
			    if(b[-x][y]==2){
					love=1;
				    return;}}}
		if(y<0){
			if(c[-x][-y]==0||c[-x][-y]==2){
				s++;
				if(c[-x][-y]==0){
					c[-x][-y]=1;
					return;}
			    if(c[-x][-y]==2){
					love=1;
				    return;}}}
	}
}
void find(int x,int y){
	if(x>=0){
		if(y>=0){
			a[x][y]=1;
			return;}
		if(y<0){
			d[x][-y]=1;
		    return;}}
	if(x<0){
		if(y>=0){
			b[-x][y]=1;
			return;}
		if(y<0){
			c[-x][-y]=1;
			return;}}
}
void findlove(int x,int y){
	if(x>=0){
		if(y>=0){
			a[x][y]=2;
			return;}
		if(y<0){
			d[x][-y]=2;
		    return;}}
	if(x<0){
		if(y>=0){
			b[-x][y]=2;
			return;}
		if(y<0){
			c[-x][-y]=2;
			return;}}
}
int main(){
	freopen("loverfinding.in","r",stdin);
	freopen("loverfinding.out","w",stdout);
	scanf("%d%d%d%d%d",&n,&x0,&y0,&xt,&yt);
	find(x0,y0);
	s++;
	findlove(xt,yt);
	if(x0==xt&&y0==yt){
		printf("1");
		return 0;}
	int i,p,q,e,f;
	p=x0;
	q=y0;
	for(i=1;i<=n;i++){
		scanf("%d%d",&e,&f);
		p+=e;
		q+=f;
		check(p,q);
		if(love)break;
	}
	if(!love){
		printf("SingleDogMZX");
		return 0;}
	printf("%d",s);
	return 0;
}