比赛 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;
	}
}