Pagini recente » Cod sursa (job #90160) | Cod sursa (job #3211496) | Cod sursa (job #3191607) | Cod sursa (job #229107) | Cod sursa (job #1026760)
#include <fstream>
#include <algorithm>
#define INF 2000000001
using namespace std;
ifstream fin("pachete.in");
ofstream fout("pachete.out");
struct punct
{
int x,y;
};
punct p[50001];
int n,xs,ys;
double panta(punct A)
{
return (A.x - xs)/(A.y-ys);
}
bool cmp(punct A, punct B)
{
return (A.x - xs) * (B.y - ys) <(B.x - xs) *(A.y - ys) ;
}
int main()
{
fin>>n;
fin>>xs>>ys;
for(int i=1;i<=n;i++)
fin>>p[i].x>>p[i].y;
sort(p+1,p+1+n,cmp);
int sol = 0;
for(int i=1;i<=n;i++)
{
punct pmax, pmin;
pmax.x = -INF, pmax.y = -INF, pmin.x = INF, pmin.y = INF;
while( (p[i].x - xs) * (p[i].y - ys) == (p[i+1].x - xs) *(p[i+1].y - ys) )
{
if(p[i].x > pmax.x)
pmax.x = p[i].x;
if(p[i].x < pmin.x)
pmin.x = p[i].x;
if(p[i].y > pmax.y)
pmax.y = p[i].y;
if(p[i].y < pmin.y)
pmin.y = p[i].y;
i++;
}
if(xs < pmax.x && xs > pmin.x && ys < pmax.y && ys > pmin.y)
sol+=2;
else ++sol;
}
fout<<sol<<'\n';
fin.close();
fout.close();
return 0;
}