Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <stdio.h>
- #include <cmath>
- #include <queue>
- #include <iomanip>
- #include <algorithm>
- #include <vector>
- #include <set>
- #include <stack>
- #include <map>
- #include <deque>
- #include <cstring>
- #define f first
- #define s second
- #define ll long long
- #define pb push_back
- #define all(x) x.begin(),x.end()
- #define mp make_pair
- #define y0 wefkljekfjwek
- #define y1 wdfefkljekfjwek
- #define y2 rfwdfefkljekfjwek
- using namespace std;
- const int N=100004;
- const long double PI=acos(-1.0);
- const long double EPS=1e-9;
- long double n,w,v;
- long double ang[N];
- long double x[N];
- int t[N];
- int ans=0;
- vector<int> same[N];
- void new_test()
- {
- ans=0;
- for(int i=0;i<N;i++)
- same[i].clear();
- }
- long double to_rad(int x)
- {
- return 1.0*x*PI/(60*180);
- }
- void process(vector<int> id)
- {
- if(w>v*t[id[0]])
- return;
- long double cur_vy = 1.0*w/t[id[0]];
- long double mx_vx=v*cos(asin(1.0*cur_vy/v));
- long double max_dif=mx_vx*t[id[0]];
- vector<long double> pts,st,ed;
- for(int i=0;i<id.size();i++)
- {
- int cur=id[i];
- pair<long double,long double> seg;
- seg.f=x[cur];
- long double dx=w*1.0/tan(to_rad(abs(ang[cur])));
- if(ang[cur]<0)
- seg.s=x[cur]-dx;
- else
- seg.s=x[cur]+dx;
- if(seg.f>seg.s)
- swap(seg.f,seg.s);
- pts.pb(seg.f);
- pts.pb(seg.s);
- st.pb(seg.f);
- ed.pb(seg.s);
- }
- sort(all(pts));
- sort(all(st));
- sort(all(ed));
- for(int i=0;i<pts.size();i++)
- {
- int cnt1=(int)(lower_bound(all(ed),pts[i]-EPS)-ed.begin());
- int cnt2=(int)st.size()-(int)(lower_bound(all(st),pts[i]+EPS+max_dif)-st.begin());
- int bad=cnt1+cnt2;
- ans=max(ans,(int)id.size()-bad);
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(0);
- //freopen("INPUT.txt","r",stdin);
- int T;
- cin>>T;
- while(T--)
- {
- cin>>n>>w>>v;
- for(int i=0;i<n;i++)
- {
- cin>>x[i]>>t[i]>>ang[i];
- same[t[i]].pb(i);
- }
- for(int i=0;i<N;i++)
- if(same[i].size())
- process(same[i]);
- cout<<ans<<endl;
- new_test();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement