调了好久一直没调出来不知道哪错了/kk
似乎不是精度问题,错的蛮多的
//ABC248-E
#include<bits/stdc++.h>
#define int double
using namespace std;
const long long N=1e3+5;
int n,k,cnt=0;
struct Point{int x,y;}a[N];
map<pair<double,double>,int> f;
map<int,int> s1,s2;
signed main(){
scanf("%lf %lf",&n,&k);
for(register long long i=1;i<=n;i++) scanf("%lf %lf",&a[i].x,&a[i].y);
if(k==1){
printf("Infinity");
return 0;
}
for(register long long i=1;i<=n;i++){
for(register long long j=i+1;j<=n;j++){
if(a[i].x==a[j].x){
int ans=0;
for(register long long p=1;p<=n;p++) if(a[p].x==a[i].x) ans++;
if(ans>=k&&s1[a[i].x]==0) cnt++,s1[a[i].x]=1;
}else if(a[i].y==a[j].y){
int ans=0;
for(register long long p=1;p<=n;p++) if(a[p].y==a[i].y) ans++;
if(ans>=k&&s2[a[i].y]==0) cnt++,s2[a[i].y]=1;
}else{
double k=(a[i].y-a[j].y)*1.0/((a[i].x-a[j].x)*1.0);
double b=a[i].y*1.0-k*1.0*a[i].x;
int ans=0;
for(register long long p=1;p<=n;p++){
if(fabs(k*1.0*a[p].x+b-a[p].y*1.0)<=0.00001) ans++;
}
if(ans>=k&&f[make_pair(k,b)]==0) cnt++,f[make_pair(k,b)]=1;
}
}
}
printf("%.0lf",cnt);
}