Advertisement
Guest User

Untitled

a guest
May 21st, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdio.h>
  4. #include <cmath>
  5. #include <queue>
  6. #include <iomanip>
  7. #include <algorithm>
  8. #include <vector>
  9. #include <set>
  10. #include <stack>
  11. #include <map>
  12. #include <deque>
  13. #include <cstring>
  14.  
  15. #define f first
  16. #define s second
  17. #define ll long long
  18. #define pb push_back
  19. #define all(x) x.begin(),x.end()
  20. #define mp make_pair
  21. #define y0 wefkljekfjwek
  22. #define y1 wdfefkljekfjwek
  23. #define y2 rfwdfefkljekfjwek
  24.  
  25. using namespace std;
  26.  
  27. const int N=10004;
  28. const double PI=acos(-1.0);
  29. const double EPS=1e-6;
  30.  
  31. int n,w,v;
  32. int ang[N];
  33. int x[N],t[N];
  34. int ans=0;
  35. vector<int> same[N];
  36.  
  37. void new_test()
  38. {
  39. ans=0;
  40. for(int i=0;i<n;i++)
  41. same[t[i]].pop_back();
  42. }
  43.  
  44. double to_rad(int x)
  45. {
  46. return 1.0*x/60*PI/180;
  47. }
  48.  
  49. void process(vector<int> id)
  50. {
  51. double cur_vy = w/t[id[0]];
  52. if(w>v*t[id[0]])
  53. return;
  54.  
  55. double mx_vx=v*cos(asin(1.0*cur_vy/v));
  56.  
  57. double max_dif=mx_vx*t[id[0]]+EPS;
  58.  
  59. vector<double> pts,st,ed;
  60.  
  61. for(int i=0;i<id.size();i++)
  62. {
  63. int cur=id[i];
  64.  
  65. pair<double,double> seg;
  66.  
  67. seg.f=x[cur];
  68. double dx=w*tan(to_rad(abs(ang[cur])));
  69.  
  70. if(ang[cur]<0)
  71. seg.s=x[cur]-dx;
  72. else
  73. seg.s=x[cur]+dx;
  74.  
  75. if(seg.f>seg.s)
  76. swap(seg.f,seg.s);
  77.  
  78. pts.pb(seg.f);
  79. pts.pb(seg.s);
  80.  
  81. st.pb(seg.f);
  82. ed.pb(seg.s);
  83. }
  84.  
  85. sort(all(pts));
  86. sort(all(st));
  87. sort(all(ed));
  88.  
  89. for(int i=0;i<pts.size();i++)
  90. {
  91. int cnt1=lower_bound(all(ed),pts[i]-EPS)-ed.begin();
  92. int cnt2=st.end()-lower_bound(all(st),pts[i]+EPS+max_dif);
  93. int bad=cnt1+cnt2;
  94. ans=max(ans,(int)id.size()-bad);
  95. }
  96. }
  97.  
  98. int main()
  99. {
  100. ios_base::sync_with_stdio(0);
  101. //freopen("INPUT.txt","r",stdin);
  102.  
  103. int T;
  104. cin>>T;
  105. while(T--)
  106. {
  107. cin>>n>>w>>v;
  108. for(int i=0;i<n;i++)
  109. {
  110. cin>>x[i]>>t[i]>>ang[i];
  111. same[t[i]].pb(i);
  112. }
  113. for(int i=0;i<N;i++)
  114. if(same[i].size())
  115. process(same[i]);
  116. cout<<ans<<endl;
  117.  
  118. new_test();
  119. }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement