/*
題意:一個無限的棋盤,黑白相間,現畫出一個多邊形,問黑白格子的數目 ,多邊形的邊是平行于x,y軸
抄watashi Orz
用類似求多邊形的面積的方法
對一個處于第一象限的矩形,要求面積的話,可以對平行于y軸的邊處理,答案就是外邊的邊跟y軸形成的區域
減去內邊的邊跟y軸形成的區域
而求跟y皺形成的區域可用 原點第一個點形成的區域 - 原點第二個點形成的區域
對于其他象限,發現面積的符號就是x,y坐標的符號相乘!!!
- +
+ -
而對于原點跟(x,y)形成區域的黑格子,x,y坐標為正的就是所有 奇數*奇數 + 偶數*偶數 的格子
若其中有坐標為負,就將該坐標的奇數改為偶數
好神奇
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<map>
#include<vector>
const int INF = 1000000000;
const int MAXN = 10086;
inline int odd(int x)
{
return x >= 0 ? (x+1)/2 : x/2;
}
inline int even(int x)
{
return x - odd(x);
}
#define gao()\
{\
if(y1 == y2)\
{\
all += (long long)x1*y1;\
b += (long long)odd(x1)*odd(y1) + (long long)even(x1)*even(y1);\
all -= (long long)x2*y2;\
b -= (long long)odd(x2)*odd(y2) + (long long)even(x2)*even(y2);\
}\
}\
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in","r",stdin);
#endif
int n;
while( ~scanf("%d",&n) )
{
int x0 , y0 , x1, y1 , x2 , y2;
long long all = 0 , b = 0;
scanf("%d%d",&x0,&y0);
x1 = x0;
y1 = y0;
for(int i = 1 ; i < n; i++)
{
scanf("%d%d",&x2,&y2);
gao();
x1 = x2;
y1 = y2;
}
x2 = x0;
y2 = y0;
gao();
printf("%lld %lld\n",b , all-b);
}
return 0;
}