#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int T,n,m,L,V,cnt,ans,tot;
int d[N],v[N],a[N],p[N];
struct S{
int l,r;
}s[N];
bool cmp(S x,S y){
if(x.r==y.r)return x.l<y.l;
return x.r<y.r;
}
int main(){
cin>>T;
while(T--){
cin>>n>>m>>L>>V;
tot=0;
for(int i=1;i<=n;i++)
cin>>d[i]>>v[i]>>a[i];
for(int i=1;i<=m;i++)
cin>>p[i];
for(int i=1;i<=n;i++){
if(a[i]<=0&&v[i]<=V)
continue;
int pos=lower_bound(p+1,p+m+1,d[i])-p;
if(a[i]>0){
int l=pos,r=m,Ans=0;
while(l<=r){
int mid=l+r>>1;
if(v[i]*v[i]+2*a[i]*(p[mid]-d[i])>V*V){
r=mid-1;
Ans=mid;
}else l=mid+1;
}
if(Ans!=0)
s[++tot]=S{Ans,m};
}else{
int l=pos,r=m,Ans=0;
while(l<=r){
int mid=l+r>>1;
if(v[i]*v[i]+2*a[i]*(p[mid]-d[i])>V*V){
l=mid+1;
Ans=mid;
}else r=mid-1;
}
if(Ans!=0)
s[++tot]=S{pos,Ans};
}
}
sort(s+1,s+tot+1,cmp);
int x=s[1].r,cnt=1;
for(int i=1;i<=tot;i++){
if(s[i].l>x){
cnt++;
x=s[i].r;
}
}
cout<<tot<<' '<<m-cnt<<'\n';
}
return 0;
}
请教下各位大佬,这个代码哪里出问题了?
这是我按老师的方法写的,似乎没问题