|
|
|
|
|
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define jascdf unsigned char
#define zsszvw 55
#define tdxvpb 1005
#define jjqulf 2500
typedef struct chdupv {
long mahxac;
long jckhxg;
} chdupv;
typedef long tkodob;
chdupv uzputm[tdxvpb];
jascdf mahxac[zsszvw + zsszvw + 1][zsszvw + zsszvw + 1],
jckhxg[zsszvw + zsszvw + 1][zsszvw + zsszvw + 1];
jascdf d[zsszvw + zsszvw + 1][zsszvw + zsszvw + 1];
chdupv fjtmow[jjqulf], hjmaab[jjqulf];
long ldldwc, kwiphb, qskjji, fyjyhj, n, tivymx, vnjqpg, wcjsua;
void yuxlmw(long mahxac,long jckhxg,jascdf zebeaj)
{
if (zebeaj == 1)
return;
if (mahxac > zsszvw || mahxac < -zsszvw || jckhxg > zsszvw || jckhxg < -zsszvw ||
d[mahxac + zsszvw][jckhxg + zsszvw] == 1)
return;
kwiphb++;
hjmaab[kwiphb-1].mahxac = mahxac;
hjmaab[kwiphb-1].jckhxg = jckhxg;
d[mahxac + zsszvw][jckhxg + zsszvw] = 1;
}
int main(void)
{
long ltgclc, wihmxs;
scanf("%ld", &n);
ltgclc = n;
for (qskjji = 1; qskjji <= ltgclc; qskjji++)
scanf("%ld%ld", &uzputm[qskjji-1].mahxac, &uzputm[qskjji-1].jckhxg);
uzputm[n] = uzputm[0];
ltgclc = n;
for (qskjji = 1; qskjji <= ltgclc; qskjji++) {
if (uzputm[qskjji-1].mahxac == uzputm[qskjji].mahxac) {
if (uzputm[qskjji-1].jckhxg < uzputm[qskjji].jckhxg) {
tivymx = uzputm[qskjji-1].jckhxg;
vnjqpg = uzputm[qskjji].jckhxg;
} else {
tivymx = uzputm[qskjji].jckhxg;
vnjqpg = uzputm[qskjji-1].jckhxg;
}
wihmxs = vnjqpg;
for (fyjyhj = tivymx; fyjyhj < wihmxs; fyjyhj++)
mahxac[uzputm[qskjji-1].mahxac + zsszvw - 1][fyjyhj + zsszvw] = 1;
} else {
if (uzputm[qskjji-1].mahxac < uzputm[qskjji].mahxac) {
tivymx = uzputm[qskjji-1].mahxac;
vnjqpg = uzputm[qskjji].mahxac;
} else {
tivymx = uzputm[qskjji].mahxac;
vnjqpg = uzputm[qskjji-1].mahxac;
}
wihmxs = vnjqpg;
for (fyjyhj = tivymx; fyjyhj < wihmxs; fyjyhj++)
jckhxg[fyjyhj + zsszvw][uzputm[qskjji-1].jckhxg + zsszvw - 1] = 1;
}
}
d[0][0] = 1;
fjtmow[0].mahxac = -zsszvw;
fjtmow[0].jckhxg = -zsszvw;
ldldwc = 1;
while (1) {
kwiphb = 0;
ltgclc = ldldwc;
for (qskjji = 1; qskjji <= ltgclc; qskjji++) {
yuxlmw(fjtmow[qskjji-1].mahxac + 1,
fjtmow[qskjji-1].jckhxg, mahxac[fjtmow[qskjji-1].mahxac + zsszvw][fjtmow[qskjji-1].jckhxg + zsszvw]);
if (fjtmow[qskjji-1].mahxac - 1 >= -zsszvw)
yuxlmw(fjtmow[qskjji-1].mahxac - 1,
fjtmow[qskjji-1].jckhxg, mahxac[fjtmow[qskjji-1].mahxac + zsszvw - 1]
[fjtmow[qskjji-1].jckhxg + zsszvw]);
yuxlmw(fjtmow[qskjji-1].mahxac,
fjtmow[qskjji-1].jckhxg + 1, jckhxg[fjtmow[qskjji-1].mahxac + zsszvw][fjtmow[qskjji-1].jckhxg + zsszvw]);
if (fjtmow[qskjji-1].jckhxg - 1 >= -zsszvw)
yuxlmw(fjtmow[qskjji-1].mahxac, fjtmow[qskjji-1].jckhxg - 1, jckhxg[fjtmow[qskjji-1].mahxac + zsszvw]
[fjtmow[qskjji-1].jckhxg + zsszvw - 1]);
}
ldldwc = kwiphb;
ltgclc = ldldwc;
for (qskjji = 1; qskjji <= ltgclc; qskjji++)
fjtmow[qskjji-1] = hjmaab[qskjji-1];
if (ldldwc == 0) {
break;
}
}
wcjsua = 0;
for (qskjji = -zsszvw; qskjji <= zsszvw; qskjji++) {
for (fyjyhj = -zsszvw; fyjyhj <= zsszvw; fyjyhj++) {
if (d[qskjji + zsszvw][fyjyhj + zsszvw] == 0)
wcjsua++;
}
}
printf("%ld\n", wcjsua);
return 0;
}
|
|
|
|
|
|