Advertisement
Guest User

Untitled

a guest
May 21st, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 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 long double PI=acos(-1.0);
  29.  
  30. long double n,w,v;
  31. long double ang[N];
  32. int x[N],t[N];
  33. int ans=0;
  34. vector<int> same[N];
  35.  
  36. void new_test()
  37. {
  38. ans=0;
  39. for(int i=0;i<n;i++)
  40. same[t[i]].pop_back();
  41. }
  42.  
  43. long double to_rad(int x)
  44. {
  45. return 1.0*x/60*PI/180;
  46. }
  47.  
  48. void rr(long double &a)
  49. {
  50. a=floor(a*1e12+0.5)/1e12;
  51. }
  52.  
  53. void process(vector<int> id)
  54. {
  55. long double cur_vy = w/t[id[0]];
  56. rr(cur_vy);
  57. if(w>v*t[id[0]])
  58. {
  59. return;
  60. }
  61.  
  62.  
  63. long double mx_vx=v*cos(asin(1.0*cur_vy/v));
  64. rr(mx_vx);
  65. long double max_dif=mx_vx*t[id[0]];
  66. rr(max_dif);
  67. vector<pair<long double,long double> > segs;
  68. vector<long double> pts;
  69. for(int i=0;i<id.size();i++)
  70. {
  71. int cur=id[i];
  72.  
  73. pair<long double,long double> seg;
  74.  
  75. seg.f=x[cur];
  76. long double dx=w*tan(to_rad(abs(ang[cur])));
  77. rr(dx);
  78. if(ang[cur]<0)
  79. seg.s=x[cur]-dx;
  80. else
  81. seg.s=x[cur]+dx;
  82.  
  83. rr(seg.s);
  84. segs.pb(seg);
  85. pts.pb(seg.f);
  86. pts.pb(seg.s);
  87. }
  88.  
  89. sort(all(pts));
  90. sort(all(segs));
  91.  
  92. for(int i=0;i<pts.size();i++)
  93. rr(pts[i]);
  94. for(int i=0;i<segs.size();i++)
  95. {
  96. rr(segs[i].f);
  97. rr(segs[i].s);
  98. }
  99.  
  100. for(int i=0;i<pts.size();i++)
  101. {
  102. long double down=pts[i];
  103. long double up=pts[i]+max_dif;
  104.  
  105. rr(up);
  106. rr(down);
  107. int cur=0;
  108.  
  109. for(int j=0;j<segs.size();j++)
  110. {
  111. if(segs[j].f<=down && segs[j].s>=up)
  112. cur++;
  113. else if(segs[j].f>=down && segs[j].s<=up)
  114. cur++;
  115.  
  116. }
  117.  
  118. ans=max(ans,cur);
  119.  
  120. down=pts[i];
  121. up=pts[i]-max_dif;
  122.  
  123. rr(up);
  124. rr(down);
  125. cur=0;
  126. for(int j=0;j<segs.size();j++)
  127. {
  128. if(segs[j].f<=down && segs[j].s>=up)
  129. cur++;
  130. else if(segs[j].f>=down && segs[j].s<=up)
  131. cur++;
  132.  
  133. }
  134.  
  135. ans=max(ans,cur);
  136. }
  137.  
  138. for(int i=0;i<pts.size();i++)
  139. {
  140. long double up=pts[i];
  141. long double down=pts[i]+max_dif;
  142.  
  143. rr(up);
  144. rr(down);
  145. int cur=0;
  146.  
  147. for(int j=0;j<segs.size();j++)
  148. {
  149. if(segs[j].f<=down && segs[j].s>=up)
  150. cur++;
  151. else if(segs[j].f>=down && segs[j].s<=up)
  152. cur++;
  153.  
  154. }
  155.  
  156. ans=max(ans,cur);
  157.  
  158. up=pts[i];
  159. down=pts[i]-max_dif;
  160.  
  161. rr(up);
  162. rr(down);
  163. cur=0;
  164. for(int j=0;j<segs.size();j++)
  165. {
  166. if(segs[j].f<=down && segs[j].s>=up)
  167. cur++;
  168. else if(segs[j].f>=down && segs[j].s<=up)
  169. cur++;
  170.  
  171. }
  172.  
  173. ans=max(ans,cur);
  174. }
  175.  
  176.  
  177. }
  178.  
  179. int main()
  180. {
  181. ios_base::sync_with_stdio(0);
  182. //freopen("INPUT.txt","r",stdin);
  183.  
  184. int T;
  185. cin>>T;
  186. while(T--)
  187. {
  188. cin>>n>>w>>v;
  189. for(int i=0;i<n;i++)
  190. {
  191. cin>>x[i]>>t[i]>>ang[i];
  192. same[t[i]].pb(i);
  193. }
  194. for(int i=0;i<N;i++)
  195. if(same[i].size())
  196. process(same[i]);
  197. cout<<ans<<endl;
  198.  
  199. new_test();
  200. }
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement