Pagini recente » Cod sursa (job #103988) | Cod sursa (job #2110106) | Cod sursa (job #2758004) | Cod sursa (job #83707) | Cod sursa (job #197600)
Cod sursa(job #197600)
#include <cstdio>
#define IN "gropi.in"
#define OUT "gropi.out"
#define C_MAX 400000
#define M_MAX 100001
#define FOR(i,a,b) for(int i=a;i<=b;++i)
int timp,N,C,M;
struct dest{int x1,y1,x2,y2;};
dest D[M_MAX];
char a[C_MAX];
void scan()
{
int x,y;
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%d%d\n",&C,&N);
FOR(i,1,N)
{
scanf("%d%d\n", &x,&y);
if(x == 1)
a[y]=1;
else
a[y]=2;
}
scanf("%d\n", &M);
FOR(i,1,M)
scanf("%d%d%d%d", &D[i].x1,&D[i].y1,&D[i].x2,&D[i].y2);
}
void solve()
{
FOR(k,1,M)
{
timp=1;
if( D[k].y2 < D[k].y1 )
{
int aux = D[k].y1;
D[k].y1 = D[k].y2;
D[k].y2 = aux;
aux = D[k].x1;
D[k].x1 = D[k].x2;
D[k].x2 = aux;
}
int poz=D[k].x1;
FOR(i,D[k].y1,D[k].y2-1)
if(a[i+1] == poz)
{
if(poz == 1)
poz = 2;
else
poz = 1;
++timp;
++timp;
}
else
++timp;
if(poz != D[k].x2)
++timp;
printf("%d\n",timp);
}
}
int main()
{
scan();
solve();
return 0;
}