View Code of Problem 32

	#include <iostream>
	#include<string.h>
	#include<math.h>
	using namespace std;
	int main()
	{
		int X,Y;
		while(scanf("%d %d",&X,&Y)!=EOF)
		{
			int x[5],y[5],hp[5];
			int d1[5],d2[5];
			double d[5];
			int i;
			for(i=0;i<5;i++)
			{
				scanf("%d %d %d",&x[i],&y[i],&hp[i]);
				d1[i]=x[i]-X;
				d2[i]=y[i]-Y;
				d[i]=sqrt(d1[i]*d1[i]+d2[i]*d2[i]);	
			}
			int l;
			double r;
			int flag=0;
			scanf("%d %lf",&l,&r);
			for(i=0;i<5;i++)
			{	
				double h=1.0*r*d[i];
				if(h>hp[i]&&l>=d[i])//如果距离和伤害足够 
				{	
					flag=0;
					for(int j=0;j<5;j++)
					{
						if(j!=i&&(d1[i]*d2[j]==d1[j]*d2[i])&&d[i]>d[j]&&hp[j]>1.0*d[j]*r)	//判断路径上是否有其他英雄 
						{
							flag=0;
							break;
						}
						else flag=1;
					}
					
				}
			}
			if( flag == 1 ) printf("Yes\n");
		else printf("No\n");
		}
		return 0;
	 } 

Double click to view unformatted code.


Back to problem 32