#include<bits/stdc++.h>
using namespace std;
const int N = 200;
const int mod = 998244353;
int x[N],y[N];
typedef pair<int,int> pii;
int C(int i,int j){
return x[i]*y[j]-x[j]*y[i];
}
int ccw(int i,int j,int k){
return C(i,j)+C(j,k)+C(k,i);
}
int pp[N+1];
#define mul(x,y) ((long long)(x)*(y)%mod)
int main(){
int n;scanf("%d",&n);
pp[0]=1;for(int i=1;i<=n;i++)pp[i]=mul(pp[i-1],2);
for(int i=0;i<n;i++){
scanf("%d%d",x+i,y+i);
}
int ans=pp[n];
ans = (ans+mod-1)%mod;
ans = (ans+mod-n)%mod;
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
int r=n;
pii a = min(pii(x[i],y[i]),pii(x[j],y[j]));
pii b = max(pii(x[i],y[i]),pii(x[j],y[j]));
for(int k=0;k<n;k++){
if(ccw(i,j,k)==0 && a <= pii(x[k],y[k]) && pii(x[k],y[k])<=b)r--;
}
ans-=pp[n-2-r];
if(ans<0)ans+=mod;
}
}
printf("%d\n",ans);
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:16:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int n;scanf("%d",&n);
^
./Main.cpp:19:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",x+i,y+i);
^