比赛 NOIP模拟赛by mzx Day1 评测结果 TTTAAAEEEE
题目名称 为爱追寻 最终得分 30
用户昵称 dududu 运行时间 5.824 s
代码语言 C++ 内存使用 10.58 MiB
提交时间 2016-10-19 21:38:15
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;

#define mod 1000003
int N;

int getnum(){
	char tmp=getchar();
	int res=0;
	int flag=0;
	while(tmp<'0'||tmp>'9') 
	{
		if(tmp=='-')
		{
			flag=1;
			tmp=getchar();
			break;
		}
		tmp=getchar();
	}
	while(tmp<='9'&&tmp>='0')
	{
		res=res*10+tmp-'0';
		tmp=getchar();
	}
	return flag? -res:res;
}


struct Point
{
	int x,y;
	bool operator ==(const Point &tmp)
	{
		if(x==tmp.x&&y==tmp.y) return 1;
		else return 0;
	}
}start,end;
map<pair<int,int>,bool> q;
struct Table
{
	vector<Point> data[mod+1];
	void insert(Point tmp)
	{
		int cur=tmp.x%mod;
		data[cur].push_back(tmp);
	}
	bool count(Point tmp)
	{
		int cur=tmp.x%mod;
		if(!data[cur].size()) return 0;
		for(int i=0;i<data[cur].size();i++) 
			if(data[cur][i]==tmp) 
				return 1;
		return 0;
	}
	int orz()
	{
		int num=0;
		for(int i=0;i<=mod;i++) num+=data[i].size();
		return num;
	}
}t;

void sol()
{
	scanf("%d%d%d%d%d",&N,&start.x,&start.y,&end.x,&end.y);
	
	int dx,dy;
	t.insert(start);
//	q[make_pair(start.x,start.y)]=1;
	int i;
	for(i=1;i<=N;){
		if(start==end) break;
		scanf("%d%d",&dx,&dy);
		i++;
		start.x+=dx;
		start.y+=dy;
//		q[make_pair(start.x,start.y)]=1;
		if(!t.count(start)) t.insert(start);		
	}
	
	if(i==N+1) printf("SingleDogMZX\n");
	else printf("%d\n",t.orz());
//	printf("%d",q.size());
	
}

int main()
{
	freopen("loverfinding.in","r",stdin);
	freopen("loverfinding.out","w",stdout);
	sol();
	return 0;
}