1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <bits/stdc++.h>
using namespace std;

typedef long long int lli;

const int MAX = 250005;
const lli INF = 1000005;

lli x[MAX], y[MAX];
lli xp[MAX], yp[MAX];

int main() {
	srand(time(0));
	int n;
	scanf("%d", &n);
	
	for (int i=0; i<n; i++) {
		scanf("%lld%lld", &x[i], &y[i]);
// 		x[i] = rand()%10;
// 		y[i] = rand()%10;
	}
	
	vector<int> v;
	
	for (int i=0; i<n; i++)
		v.push_back(i);
	
	for (int rem = 0; rem < n; rem++) {
		lli res = 0;
// 		random_shuffle(v.begin(), v.end());
		
		for (int i=0; i<n; i++) {
			xp[i] = x[v[i]];
			yp[i] = y[v[i]];
		}
		
		for (int i=0; i<n; i++) {
			if (i == rem)
				continue;
			for (int j=0; j<n; j++) {
				if (j == rem)
					continue;
				if (xp[i] != xp[j]) {
// 					printf(" %lld %lld, %lld\n", xp[j], xp[i], (xp[i]-xp[j])/abs(xp[i]-xp[j]));
					xp[j] += (xp[i]-xp[j])/abs(xp[i]-xp[j]);
				}
				if (yp[i] != yp[j]) {
					yp[j] += (yp[i]-yp[j])/abs(yp[i]-yp[j]);
				}
			}
		}
		
// 		vector<int> rev;
// 		rev.resize(n+5);
// 		
// 		for (int i=0; i<n; i++) {
// 			rev[v[i]] = i;
// 		}
		
// 		for (int i=0; i<n; i++)
// 			printf("(%lld %lld)", x[v[i]], y[v[i]]);
// 		printf("\n");
		
// 		for (int i=0; i<n; i++)
// 			printf("(%lld %lld)", xp[rev[i]]-xp[rev[0]], yp[rev[i]]-yp[rev[0]]);
// 		printf("\n\n");
// 		break;

		for (int i=0; i<n; i++) {
			res += xp[i]*yp[i];
		}
		
		printf("%lld\n", res);
	}
	
	return 0;
}