Pagini recente » Cod sursa (job #389548) | Cod sursa (job #1566672) | Cod sursa (job #2234748) | Cod sursa (job #1742031) | Cod sursa (job #197656)
Cod sursa(job #197656)
#include <cstdio>
int c,n,v[2][20000002],m,x1,x2,y1,y2,cordi,cordj,ok,km;
int groapa(int d){
if (d==1){
if (v[cordi][cordj+1]==1){
cordi=(cordi+1)%2;
++km;
}
else if ((cordi+1)%2==x2&&(cordj==y2)){
++km;
return 0;
}
}
else if (d==2){
if (v[(cordi+1)%2][cordj]==1){
if (x1<x2){
d=1;
++cordj;
}
else{
d=3;
--cordj;
}
++km;
}
else if (((cordj+1==y2)||(cordj-1==y2))&&(cordi==x2)){
++km;
return 0;
}
}
if (d==3){
if (v[cordi][cordj-1]==1){
cordi=(cordi+1)%2;
++km;
}
else if ((cordi+1)%2==x2&&(cordj==y2)){
++km;
return 0;
}
}
return 1;
}
void write(int i){
printf("%d",&i);
}
int solve(){
int d,km=0;
cordi=x1;
cordj=y1;
ok=1;
if (y1<y2)
d=1;
else
d=3;
if (x1==x2&&y1==y2)
return 0;
while (ok){
ok=groapa(d);
}
return km;
}
void read(){
int i,j,k;
freopen("gropi.in","r",stdin);
freopen("gropi.out","w",stdout);
scanf("%d%d",&c,&n);
for (i=1;i<=n;++i){
scanf("%d%d",&j,&k);
v[j][k]=1;
}
scanf("%d",&m);
for (i=1;i<=m;++i){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
write(solve());
}
}
int main(){
read();
//solve();
//write();
return 0;
}