记录编号 205422 评测结果 AAAAAAAAAA
题目名称 [SYOI 2015] Asm.Def的一秒 最终得分 100
用户昵称 GravatarSatoshi 是否通过 通过
代码语言 C++ 运行时间 0.316 s
提交时间 2015-11-05 12:35:03 内存使用 4.06 MiB
显示代码纯文本
  1. #include <fstream>
  2. #include <algorithm>
  3. #define N 100010
  4. using namespace std;
  5. typedef long long ll;
  6. ifstream in("asm_second.in");
  7. ofstream out("asm_second.out");
  8. int n;
  9. ll g[N]={0};
  10. int f[N]={0};
  11. int ans=0;
  12. ll INF=1;
  13. class point
  14. {
  15. public:
  16. ll x,y;
  17. void make(ll a,ll b)
  18. {
  19. x=a;
  20. y=b;
  21. }
  22. point operator +(point a)
  23. {
  24. point b;
  25. b.x=x+a.x;
  26. b.y=y+a.y;
  27. return b;
  28. }
  29. point operator -(point a)
  30. {
  31. point b;
  32. b.x=x-a.x;
  33. b.y=y-a.y;
  34. return b;
  35. }
  36. ll operator *(point a)
  37. {
  38. ll solo=0;
  39. solo=x*a.x+y*a.y;
  40. return solo;
  41. }
  42. ll operator ^(point a)
  43. {
  44. ll solo=0;
  45. solo=x*a.y-y*a.x;
  46. return solo;
  47. }
  48. point operator *(int a)
  49. {
  50. point b;
  51. b.x=a*x;
  52. b.y=a*y;
  53. return b;
  54. }
  55. void change(point a,point b)
  56. {
  57. ll xx,yy;
  58. xx=y*b.x-x*b.y;
  59. yy=x*a.y-y*a.x;
  60. x=-xx;
  61. y=-yy;
  62. }
  63. }S,T,P[N],Q[N];
  64. bool operator <(point a,point b)
  65. {
  66. if(a.x==b.x)return a.y<b.y;
  67. return a.x<b.x;
  68. }
  69. void read()
  70. {
  71. int i,k;
  72. ll Y;
  73. INF=INF<<58;
  74. in>>n;
  75. in>>S.y>>S.x>>T.y>>T.x;
  76. for(i=1;i<=n;i++)
  77. {
  78. in>>Q[i].x>>Q[i].y;
  79. Q[i].change(S,T);
  80. }
  81. Q[++n].make(0,0);
  82. sort(Q+1,Q+n+1);
  83. for(i=1;i<=n;i++)g[i]=INF;
  84. for(i=1;i<=n;i++)
  85. {
  86. if(Q[i].x<0||Q[i].y<0)continue;
  87. k=lower_bound(g+1,g+n+1,Q[i].y)-g;
  88. f[i]=k;
  89. g[k]=Q[i].y;
  90. }
  91. //for(i=1;i<=n;i++)out<<f[i]<<' ';
  92. ans=0;
  93. for(i=1;i<=n;i++)
  94. {
  95. ans=max(ans,f[i]);
  96. }
  97. out<<ans-1<<endl;
  98. }
  99. int main()
  100. {
  101. read();
  102. //work();
  103. return 0;
  104. }