比赛 |
20110923 |
评测结果 |
WWWWWA |
题目名称 |
跳远 |
最终得分 |
16 |
用户昵称 |
苏轼 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-09-23 20:50:00 |
显示代码纯文本
#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int number,v0,q[25][2],w[25][2];
void caculate(int x);
int pao(int x,int y);
int main()
{
freopen ("jump.in","r",stdin);
freopen ("jump.out","w",stdout);
cin>>number>>v0;
for (int i=0;i<number;i++)
{
cin>>q[i][0];
w[i][0]=0;
w[i][1]=1;
}
for (int i=number-2;i>=0;i--)
{
caculate(i);
}
for (int i=0;i<number-1;i++)
{
cout<<w[i][0]+1<<' ';
}
cout<<endl;
return 0;
}
void caculate(int x)
{
for (int i=x;i<number;i++)
{
double xmax,ymax;
ymax=v0*v0/(2*10);
xmax=v0/10*2*v0+((sqrt((double)(q[i][0]/2*sqrt((double)3)*2*10+v0*v0))-v0)/10)*v0;
if (xmax<q[i][0]/2)
{
w[i][0]=0;
}
else
{
if ((ymax+q[i][0]/2*sqrt((double)3))<(q[i+1][0]/2*sqrt((double)3)))
{
w[i][0]=i+1;
w[i][1]=0;
}
else
{
if (((v0/10*2*v0)>(q[i][0]/2))||((v0/10*2*v0)<((v0/10*2*v0)/2+(q[i][0]/2))))
{
w[i][0]=i+1;
w[i][1]=0;
}
else
{
if (pao(((q[i][0]+q[i+1][0])/2),(q[i+1][0]/2*sqrt(double(3))-q[i][0]/2*sqrt(double(3)))))
{
w[i][0]=i+1;
w[i][1]=1;
}
}
}
}
}
}
int pao(int x,int y)
{
if (x*(x-v0/10*2*v0)<=y)
{
return (true);
}
else
{
return false;
}
}