Cod sursa(job #301905)
#include<fstream.h>
ifstream f("gropi.in");
ofstream g("gropi.out");
int main ()
{
int a[3][2000000001];
long n,i,m,x,y,x1,x2,y1,y2,timp,c;
f>>c>>n;
for (i=1; i<=c; i++)
{
a[1][i]=0;
a[2][i]=0;
}
for (i=1; i<=n; i++)
{
f>>x>>y;
a[x][y]=1;
}
f>>m;
for (i=1; i<=m; i++)
{
f>>x1>>y1>>x2>>y2;
a[x2][y2]=2; timp=0;
if (y1<=y2)
while (!(x1==x2 && y1==y2))
{
timp++;
if (x1==1 && a[1][y1+1]!=1 && a[2][y1]!=2) y1++;
else if (x1==1 && a[1][y1+1]!=1 && a[2][y1]==2) { x1++; break; }
else if (x1==1 && a[1][y1+1]==1) x1++;
else if (x1==2 && a[2][y1+1]!=1 && a[1][y1]!=2) y1++;
else if (x1==2 && a[2][y1+1]!=1 && a[1][y1]==2) { x1--; break; }
else if (x1==2 && a[2][y1+1]==1) x1--;
}
else if (y1>y2)
while (!(x1==x2 && y1==y2))
{
timp++;
if (x1==1 && a[1][y1-1]!=1 && a[2][y1]!=2) y1--;
else if (x1==1 && a[1][y1-1]!=1 && a[2][y1]==2) { x1++; break; }
else if (x1==1 && a[1][y1-1]==1) x1++;
else if (x1==2 && a[2][y1-1]!=1 && a[1][y1]!=2) y1--;
else if (x1==2 && a[2][y1-1]!=1 && a[1][y1]==2) { x1--; break; }
else if (x1==2 && a[2][y1-1]==1) x1--;
}
timp++; a[x2][y2]=0;
if (i<m) g<<timp<<" "; else g<<timp;
}
return 0;
}