度数从-90到90每个0.5度进行枚举。
#include<stdio.h>
#include<math.h>
#define g 9.8
#define PI acos(-1.0)
#define eps 1e-12
int main(){
int m;
double h,x1,y1,x2,y2;
double v[1000];
while(~scanf("%d",&m),m){
scanf("%lf %lf %lf %lf %lf",&h,&x1,&y1,&x2,&y2);
for(int i=0;i<m;i++){
scanf("%lf",&v[i]);
}
int ans=0;
for(double i=-90;i<=90+eps;i+=0.5){
int cnt=0;
int j=0;
for(j=0;j<m;j++){
//vy*t+1/2*g*t*t=h;
double vx=v[j]*cos(i*(PI/180.0));
double vy=v[j]*sin(i*(PI/180.0));
double t=((sqrt(((2*vy)/g)*((2*vy)/g)+(8*h)/g))-2*vy/g)/2;
double sx=vx*t;
if(sx>=x2&&sx<=y2){
break;
}
if(sx>=x1&&sx<=y1){
cnt++;
}
}
if(j==m&&cnt>ans) ans=cnt;
}
printf("%d\n",ans);
}
return 0;
}