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