Pagini recente » Cod sursa (job #1228518) | Cod sursa (job #2115945) | Cod sursa (job #2899650) | Cod sursa (job #2641282) | Cod sursa (job #7084)
Cod sursa(job #7084)
#include<stdio.h>
#include<math.h>
#define input "pachete.in"
#define output "pachete.out"
#define dim 50001
long n, x, y, x0, y0, i, k;
long divide(int p,int q);
void qsort(int p,int q);
void parc(int i);
struct e
{
long x,y,v,p;
};
e s[dim];
int main()
{
FILE *in, *out;
in = fopen (input, "r");
out = fopen (output, "w");
fscanf(in, "%ld", &n);
fscanf(in, "%ld%ld", &x0, &y0);
for(i=1;i<=n;i++)
{
fscanf(in, "%ld%ld", &s[i].x, &s[i].y);
s[i].v=0;
s[i].p=(s[i].y-y0)/(s[i].x-x0);
}
qsort(1,n);
k=n;
parc(1);
fprintf(out, "%ld", k);
return 0;
}
long divide(int p, int q)
{
long st=p, dr=q, x=s[p].p;
while(st<dr)
{
while(st<dr && s[dr].p>=x)
dr--;
s[st].p=s[dr].p;
while(st<dr &&s[st].p<=x)
st++;
s[dr].p=s[st].p;
}
s[st].p=x;
return st;
}
void qsort(int p, int q)
{
long m=divide(p,q);
if(m-1>p)
qsort(p,m-1);
if(m+1<q)
qsort(m+1,q);
}
void parc(int i)
{
long j;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(s[i].p!=s[j].p)
{
k=k-(j-i-1);
break;
}
}