Pagini recente » Cod sursa (job #2739444) | Cod sursa (job #287193) | Cod sursa (job #1392590) | Cod sursa (job #488606) | Cod sursa (job #253637)
Cod sursa(job #253637)
#include <cstdio>
using namespace std;
struct punct {
int x, y;
};
int n, m, i, j, t, rez, d, aux, zero;
punct a, b, p1, p2, ax;
inline int my_abs(int x) {
if (x >= 0)
return x;
return -x;
}
int main() {
freopen("taxi.in", "r", stdin);
freopen("taxi.out", "w", stdout);
scanf("%d", &t);
for (; t > 0; t--) {
rez = 0;
zero = 1;
scanf("%d%d%d%d%d%d", &n, &m, &a.x, &a.y, &b.x, &b.y);
if (a.x == b.x && a.y == b.y)
rez = (n + 1) * (m + 1);
else {
if (b.x < a.x) {
ax = a;
a = b;
b = ax;
}
if (my_abs(a.x - b.x) == my_abs(a.y - b.y)) {
d = my_abs(a.x - b.x) + my_abs(a.y - b.y);
if (d % 2 == 1)
zero = 0;
else {
d /= 2;
if (a.y < b.y)
rez += (n - b.x + 1) * (a.y + 1) + (m - b.y + 1) * (a.x + 1) - 2;
else
rez += (n - b.x + 1) * (m - a.y + 1) + (a.x + 1) * (b.y + 1) - 2;
rez += my_abs(a.x - b.x) + 1;
}
}
else {
if (b.x < a.x) {
aux = a.x;
a.x = b.x;
b.x = aux;
}
if (b.y < a.y) {
aux = a.y;
a.y = b.y;
b.y = aux;
}
//n linii si m coloane
if (a.x == b.x && a.y == b.y)
rez = (n + 1) * (m + 1);
//printf("%d\n", (n + 1) * (m + 1));
else {
if (a.x == b.x)
if (my_abs(a.y - b.y) % 2 == 0)
rez = n + 1;
//printf("%d\n", n + 1);
else
zero = 0;
//printf("0\n");
else
if (a.y == b.y)
if (my_abs(a.x - b.x) % 2 == 0)
rez = m + 1;
//printf("%d\n", m + 1);
else
zero = 0;
//printf("0\n");
else {
{
//formez cacatu
d = my_abs(a.x - b.x) + my_abs(a.y - b.y);
if (d % 2 == 1)
//printf("0\n");
zero = 0;
else {
d /= 2;
p1.x = a.x + d;
p1.y = a.y;
if (p1.x > b.x) {
p1.y += p1.x - b.x;
p1.x = b.x;
}
p2.x = a.x;
p2.y = a.y + d;
if (p2.y > b.y) {
p2.x += p2.y - b.y;
p2.y = b.y;
}
rez = my_abs(p1.x - p2.x) + 1;
if (my_abs(a.x - b.x) != my_abs(a.y - b.y)) {
if (p1.y == a.y)
rez += p1.y;
if (p1.x == b.x)
rez += n - p1.x;
if (p2.x == a.x)
rez += p2.x;
if (p2.y == b.y)
rez += m - p2.y;
}
else {
rez += (p1.y + 1) * (n - p1.x + 1) + (p2.x + 1) * (m - p2.y + 1) - 2;
}
///printf("%d\n", rez);
}
}
}
}
}
}
printf("%d\n", rez * zero);
}
return 0;
}