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.41 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. for(int j=i;j<pts.size();j++)
  103. {
  104.  
  105. long double down=pts[i];
  106. long double up=pts[j];
  107.  
  108. long double dif=abs(up-down);
  109. rr(dif);
  110. if(dif>max_dif) break;
  111. rr(up);
  112. rr(down);
  113. int cur=0;
  114.  
  115. for(int j=0;j<segs.size();j++)
  116. {
  117. if(segs[j].f<=down && segs[j].s>=up)
  118. cur++;
  119. else if(segs[j].f>=down && segs[j].s<=up)
  120. cur++;
  121.  
  122. }
  123.  
  124. ans=max(ans,cur);
  125.  
  126. down=pts[i];
  127. up=pts[j];
  128.  
  129. rr(up);
  130. rr(down);
  131. cur=0;
  132. for(int j=0;j<segs.size();j++)
  133. {
  134. if(segs[j].f<=down && segs[j].s>=up)
  135. cur++;
  136. else if(segs[j].f>=down && segs[j].s<=up)
  137. cur++;
  138.  
  139. }
  140.  
  141. ans=max(ans,cur);
  142. }
  143. }
  144.  
  145.  
  146. }
  147.  
  148. int main()
  149. {
  150. ios_base::sync_with_stdio(0);
  151. //freopen("INPUT.txt","r",stdin);
  152.  
  153. int T;
  154. cin>>T;
  155. while(T--)
  156. {
  157. cin>>n>>w>>v;
  158. for(int i=0;i<n;i++)
  159. {
  160. cin>>x[i]>>t[i]>>ang[i];
  161. same[t[i]].pb(i);
  162. }
  163. for(int i=0;i<N;i++)
  164. if(same[i].size())
  165. process(same[i]);
  166. cout<<ans<<endl;
  167.  
  168. new_test();
  169. }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement