思路:
我们可以算不合法的
如果三个点都在同一侧 就不合法..
用总方案数减掉就可以了
(有神奇的实现方法...)
//By SiriusRen
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=;
int n;long long ans;
struct Node{int x,y;double angle;}node[N];
bool operator<(Node a,Node b){return a.angle<b.angle;}
long long operator*(Node a,Node b){return 1ll*a.x*b.y-1ll*a.y*b.x;}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d",&node[i].x,&node[i].y);
node[i].angle=atan2(node[i].y,node[i].x);
}
sort(node+,node++n);
int cnt=,r=;
for(int i=;i<=n;i++){
while(r%n+!=i&&node[i]*node[r%n+]>)r++,cnt++;
ans-=1ll*cnt*(cnt-)/,cnt--;
}printf("%lld\n",1ll*n*(n-)*(n-)/+ans);
}