记录编号 |
205422 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[SYOI 2015] Asm.Def的一秒 |
最终得分 |
100 |
用户昵称 |
Satoshi |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.316 s |
提交时间 |
2015-11-05 12:35:03 |
内存使用 |
4.06 MiB |
显示代码纯文本
#include <fstream>
#include <algorithm>
#define N 100010
using namespace std;
typedef long long ll;
ifstream in("asm_second.in");
ofstream out("asm_second.out");
int n;
ll g[N]={0};
int f[N]={0};
int ans=0;
ll INF=1;
class point
{
public:
ll x,y;
void make(ll a,ll b)
{
x=a;
y=b;
}
point operator +(point a)
{
point b;
b.x=x+a.x;
b.y=y+a.y;
return b;
}
point operator -(point a)
{
point b;
b.x=x-a.x;
b.y=y-a.y;
return b;
}
ll operator *(point a)
{
ll solo=0;
solo=x*a.x+y*a.y;
return solo;
}
ll operator ^(point a)
{
ll solo=0;
solo=x*a.y-y*a.x;
return solo;
}
point operator *(int a)
{
point b;
b.x=a*x;
b.y=a*y;
return b;
}
void change(point a,point b)
{
ll xx,yy;
xx=y*b.x-x*b.y;
yy=x*a.y-y*a.x;
x=-xx;
y=-yy;
}
}S,T,P[N],Q[N];
bool operator <(point a,point b)
{
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
void read()
{
int i,k;
ll Y;
INF=INF<<58;
in>>n;
in>>S.y>>S.x>>T.y>>T.x;
for(i=1;i<=n;i++)
{
in>>Q[i].x>>Q[i].y;
Q[i].change(S,T);
}
Q[++n].make(0,0);
sort(Q+1,Q+n+1);
for(i=1;i<=n;i++)g[i]=INF;
for(i=1;i<=n;i++)
{
if(Q[i].x<0||Q[i].y<0)continue;
k=lower_bound(g+1,g+n+1,Q[i].y)-g;
f[i]=k;
g[k]=Q[i].y;
}
//for(i=1;i<=n;i++)out<<f[i]<<' ';
ans=0;
for(i=1;i<=n;i++)
{
ans=max(ans,f[i]);
}
out<<ans-1<<endl;
}
int main()
{
read();
//work();
return 0;
}