Pagini recente » Cod sursa (job #1883376) | Cod sursa (job #1954556) | Cod sursa (job #1383864) | Cod sursa (job #2576687) | Cod sursa (job #2457302)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin ("pachete.in");
ofstream fout ("pachete.out");
pair<int,int> hq;
vector< pair<int,int> > c[5];
double panta(pair<int,int> a,pair<int,int> b)
{
return (double)(hq.second-a.second)/(hq.first-a.first)<(double)(hq.second-b.second)/(hq.first-b.first);
}
bool colin(pair<int,int> a,pair<int,int> b,pair<int,int> c)
{
if (a.first*b.second+c.first*a.second+b.first*c.second-c.first*b.second-b.first*a.second-c.first*a.second==0)
return true;
return false;
}
int main()
{
int n,nrdrum=0,x,y;
fin>>n>>x>>y;
hq=make_pair(x,y);
nrdrum=n;
for (int i=1;i<=n;i++)
{
fin>>x>>y;
if (x<hq.first)
if (y<hq.second)
c[1].push_back(make_pair(x,y));
else
c[4].push_back(make_pair(x,y));
else
if (y<hq.second)
c[2].push_back(make_pair(x,y));
else
c[3].push_back(make_pair(x,y));
}
for (int i=1;i<=4;i++)
sort(c[i].begin(), c[i].end(), panta);
for (int i=1;i<=4;i++)
{
int lim=c[i].size();
for (int j=0;j<lim-1;j++)
if ((double)(hq.second-c[i][j].second)/(hq.first-c[i][j].first)==(double)(hq.second-c[i][j+1].second)/(hq.first-c[i][j+1].first))
nrdrum--;
}
fout<<nrdrum<<'\n';
return 0;
}