Cod sursa(job #301910)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 8 aprilie 2009 15:24:36
Problema Gropi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<fstream.h>
ifstream f("gropi.in");
ofstream g("gropi.out");

int main ()
{
	int a[3][20000001];
	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;
}