Pagini recente » Cod sursa (job #3153152) | Cod sursa (job #2521103) | Cod sursa (job #1538444) | Cod sursa (job #19251) | Cod sursa (job #2555818)
#include <fstream>
#include <vector>
#include <deque>
#include <algorithm>
#define x first
#define y second
using namespace std;
ifstream fin("pachete.in");
ofstream fout("pachete.out");
int n,x,y,i,j,k,sol,d[50001],cnt,st,dr,mid;
vector <pair<int,int> > v[5];
int cunt(int x){
cnt=0;
for(i=0;i<v[x].size();i++){
st=1;
dr=cnt;
while(st<=dr){
mid=(st+dr)/2;
if(v[x][i].y >= d[mid])
dr=mid-1;
else
st=mid+1;
}
if(st>cnt)
cnt++;
d[st]=v[x][i].y;
}
return cnt;
}
int main(){
fin>>n>>x>>y;
for(i=1;i<=n;i++){
fin>>j>>k;
j-=x;
k-=y;
if(j>=0){
if(k>=0)
v[1].push_back(make_pair(j,k));
else
v[4].push_back(make_pair(j,-k));
}else{
if(k>=0)
v[2].push_back(make_pair(-j,k));
else
v[3].push_back(make_pair(-j,-k));
}
}
sort(v[1].begin(),v[1].end());
sol+=cunt(1);
sort(v[2].begin(),v[2].end());
sol+=cunt(2);
sort(v[3].begin(),v[3].end());
sol+=cunt(3);
sort(v[4].begin(),v[4].end());
sol+=cunt(4);
fout<<sol;
return 0;
}