Cod sursa(job #197619)

Utilizator codrinCodrin LACHE codrin Data 5 iulie 2008 12:17:11
Problema Gropi Scor 0
Compilator cpp Status done
Runda Junior Challenge 2008 Marime 1.06 kb
#include<fstream.h>

int main()
{
	ifstream fin("gropi.in");
	ofstream fout("gropi.out");
	int a[3][5000000],nn,m,n=2,mm,c,i1,j1,i2,j2,i,j,k,ii[500000],jj[500000],s,f,icrt,jcrt,kk;
	const int di[4]={-1,0,0,1},dj[4]={0,-1,1,0};
	fin>>c>>nn;
	memset(a,0,sizeof(a));
		for(k=1;k<=nn;k++)
			{
				fin>>i>>j;
				a[i][j]=-1;
			}
	fin>>mm;
		for(k=1;k<=mm;k++)
			{
				m=c;
				fin>>i1>>j1>>i2>>j2;
				ii[s=f=1]=i1;
				jj[s]=j1;
				a[i1][j1]=1;
				int nrmark,inou,jnou;
				while(s<=f)
					{
						icrt=ii[s];jcrt=jj[s];s++;
						nrmark=a[icrt][jcrt];
						for(kk=0;kk<=3;kk++)
							{
								inou=icrt+di[kk];jnou=jcrt+dj[kk];
								if(inou>=1&&inou<=n&&jnou>=1&&jnou<=m)
								if(a[inou][jnou]==0)
									{
										a[inou][jnou]=nrmark+1;
										ii[++f]=inou;
										jj[f]=jnou;
										if(inou==i2&&jnou==j2) {s=f+1;break;}
									}
							}
					}
				fout<<a[i2][j2]<<endl;
				for(i=1;i<=c;i++)
					{
						if(a[1][i]!=-1)
							a[1][i]=0;
						if(a[2][i]!=-1)
							a[2][i]=0;
					}

			}
return 0;
}