Pagini recente » Cod sursa (job #2907561) | Cod sursa (job #2904419) | Cod sursa (job #3121047) | Cod sursa (job #1353907) | Cod sursa (job #197580)
Cod sursa(job #197580)
#include <fstream>
#include <stdio.h>
#define MAX 10000000
using namespace std;
int a[2][300000],c,m;
void citire()
{
freopen ("gropi.in","r",stdin);
freopen ("gropi.out","w",stdout);
scanf ("%d %d",&c,&m);
int x,y;
for (int i=0;i<m;i++)
{
scanf ("%d %d",&x,&y);
a[x-1][y]=MAX;
}
}
int min (int a,int b)
{
return a<b?a:b;
}
void lee()
{
int x1,y1;
for (int i=1;i<c+1;i++)
if (a[0][i]==0)
{
x1=0;
y1=i;
break;
}
else
if (a[1][i]==0)
{
x1=1;
y1=i;
break;
}
a[x1][y1]=1;
if (x1==0)
{
if (a[1][y1]==0)
a[1][y1]=2;
if (a[0][y1+1]==0)
a[0][y1+1]=2;
}
else
{
if (a[1][y1+1]==0)
a[1][y1+1]=2;
}
for (int i=y1;i<=c;i++)
{
if (a[0][i]!=MAX && a[0][i]!=0)
{
if (a[0][i+1]==0)
a[0][i+1]=a[0][i]+1;
if (a[1][i]==0)
a[1][i]=a[0][i]+1;
}
if (a[1][i]!=MAX && a[1][i]!=0)
{
if (a[0][i]==0)
a[0][i]=a[1][i]+1;
if (a[1][i+1]==0)
a[1][i+1]=a[1][i]+1;
}
if (a[0][i]!=MAX && a[0][i]!=0)
{
if (a[0][i+1]==0)
a[0][i+1]=a[0][i]+1;
if (a[1][i]==0)
a[1][i]=a[0][i]+1;
}
if (a[1][i]!=MAX && a[1][i]!=0)
{
if (a[0][i]==0)
a[0][i]=a[1][i]+1;
if (a[1][i+1]==0)
a[1][i+1]=a[1][i]+1;
}
}
}
void afisare()
{
int nr;
int x1,x2,y2,y1;
scanf ("%d",&nr);
for (int i=0;i<nr;i++)
{
scanf ("%d %d %d %d",&x1,&y1,&x2,&y2);
printf("%d\n", abs(a[x1-1][y1]-a[x2-1][y2])+1);
}
}
int main ()
{
citire();
lee();
afisare();
}