Cod sursa(job #197591)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 5 iulie 2008 11:23:37
Problema Gropi Scor 0
Compilator cpp Status done
Runda Junior Challenge 2008 Marime 0.94 kb
#include<stdio.h>

int C,c,l,N,a[2][10001];
const int dx[]={0,1,0 ,-1},
	  dy[]={-1,0,1,0 };
int main()
{
 freopen("gropi.in","r",stdin);
 freopen("gropi.out","w",stdout);

 scanf("%d %d",&C,&N);
 int i,j;
 for(i=1;i<=N;i++)
    {scanf("%d %d",&l,&c);
     a[l][c]=1;
     }
 int x[100000],ok=0,_i,_j,y[100000],li=1,lf=1;
 for(i=1;i<=C&&ok==0;i++)
  for(j=1;j<=2&&ok==0;j++)
    if(a[j][i]==0) ok=1,x[1]=j,y[1]=i,a[i][j]=1;


 for(li=1;li<=lf;li++)
   {
    i=x[li];
    j=y[li];
    for(int d=0;d<4;d++)
       {_i=i+dx[d];
	_j=j+dy[d];
	if(_i<1||_i>2) continue;
	if(_j<1||_j>C) continue;
	if(a[_i][_j]) continue;
	x[++lf]=_i;
	y[lf]=_j;
	a[_i][_j]=a[i][j]+1;

	}

    }
 int m,x1,x2,y1,y2,min;
 scanf("%d",&m);
 for(i=1;i<=m;i++)
   {scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
    if(a[x1][y1]<a[x2][y2]) min=a[x2][y2]-a[x1][y1]+1;
       else min=a[x1][y1]-a[x2][y2]+1;
    printf("%d\n",min);

   }
 return 0;
}