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