Pagini recente » Cod sursa (job #2089188) | Cod sursa (job #2869368) | Cod sursa (job #2682454) | Cod sursa (job #2182872) | Cod sursa (job #197611)
Cod sursa(job #197611)
#include <stdio.h>
int n,m,p,i,j,a[3][10000],b[30000],c[30000],x[100010],y[100010],sx[100010],sy[100010],fx[100010],fy[100010];
int main()
{
freopen("gropi.in","r",stdin);
freopen("gropi.out","w",stdout);
scanf("%d%d",&p,&n);
for (i=1; i<=n; ++i) { scanf("%d%d",&x[i],&y[i]); a[x[i]][y[i]]=2000000000; }
scanf("%d",&m);
for (i=1; i<=m; ++i) scanf("%d%d%d%d",&sx[i],&sy[i],&fx[i],&fy[i]);
for (i=1; i<=m; ++i)
{
b[0]=1;
b[1]=sx[i];
c[1]=sy[i];
a[b[1]][c[1]]=1;
for (j=1; j<=b[0]; ++j)
{
if (b[j]+1<3 && a[b[j]+1][c[j]]==0)
{
b[++b[0]]=b[j]+1;
c[b[0]]=c[j];
a[b[j]+1][c[j]]=a[b[j]][c[j]]+1;
}
if (c[j]+1<=p && a[b[j]][c[j]+1]==0)
{
b[++b[0]]=b[j];
c[b[0]]=c[j]+1;
a[b[j]][c[j]+1]=a[b[j]][c[j]]+1;
}
if (b[j]-1>0 && a[b[j]-1][c[j]]==0)
{
b[++b[0]]=b[j]-1;
c[b[0]]=c[j];
a[b[j]-1][c[j]]=a[b[j]][c[j]]+1;
}
if (c[j]-1>0 && a[b[j]][c[j]-1]==0)
{
b[++b[0]]=b[j];
c[b[0]]=c[j]-1;
a[b[j]][c[j]-1]=a[b[j]][c[j]]+1;
}
}
printf("%d\n",a[fx[i]][fy[i]]);
for (j=1; j<=p; ++j) { if (a[1][j]<2000000000) a[1][j]=0; if (a[2][j]<2000000000) a[2][j]=0; }
}
return 0;
}