Pagini recente » Cod sursa (job #266619) | Cod sursa (job #661567) | Cod sursa (job #2334087) | Cod sursa (job #1147030) | Cod sursa (job #2556397)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pachete.in");
ofstream fout("pachete.out");
int n,x,y,px,py,i,sol,d[50010];
vector< pair<int,int> > c1,c2,c3,c4;
int cadran(vector< pair<int,int> > v) {
if (v.size()==0)
return 0;
sort(v.begin(),v.end());
int cnt=1,st,dr;
d[1]=v[0].second;
for (i=1;i<v.size();i++) {
x=v[i].second;
st=1, dr=cnt;
while (st<=dr) {
int mid=(st+dr)/2;
if (d[mid]>x)
st=mid+1;
else
dr=mid-1;
}
if (st>cnt)
cnt++;
d[st]=x;
}
return cnt;
}
int main() {
fin>>n;
fin>>x>>y;
for (i=1;i<=n;i++) {
fin>>px>>py;
px-=x, py-=y;
if (px>0) {
if (py>0)
c1.push_back({px,py});
else
c4.push_back({px,py});
}
else {
if (py>0)
c2.push_back({px,py});
else
c3.push_back({px,py});
}
}
for (auto it:c2)
it.first=-it.first;
for (auto it:c3)
it.first=-it.first, it.second=-it.second;
for (auto it:c4)
it.second=-it.second;
sol=cadran(c1)+cadran(c2)+cadran(c3)+cadran(c4);
fout<<sol;
return 0;
}