Pagini recente » Monitorul de evaluare | Cod sursa (job #171814) | Cod sursa (job #2004557) | Diferente pentru home intre reviziile 533 si 534 | Cod sursa (job #1302806)
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,i,j,nr,x1,y1,x2,y2,d;
struct nod
{
int x;
int y;
}v[50005];
int cmp(const nod a,const nod b)
{
return a.x<b.x;
}
int cmmdc(int x,int y)
{
int d,i,r;
d=max(x,y); i=min(x,y);
r=d%i;
while (r) d=i,i=r,r=d%i;
return i;
}
int main()
{
freopen("pachete.in","r",stdin);
freopen("pachete.out","w",stdout);
scanf("%d",&n);
scanf("%d %d",&x1,&y1);
for(i=1;i<=n;i++)
{
scanf("%d %d",&x2,&y2);
d=cmmdc(x2-x1,y2-y1);
v[i].x=(x2-x1)/d; v[i].y=(y2-y1)/d;
if ((v[i].x>0)&&(v[i].y<0)) swap(v[i].x,v[i].y);
}
sort(v+1,v+n+1,cmp); nr=1;
for (i=2;i<=n;i++)
if ((v[i].x!=v[i-1].x)||(v[i].y!=v[i-1].y))
nr++;
printf("%d",nr);
return 0;
}