View Code of Problem 32

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int main()
{
	int x,y;
	int a[5],b[5],c[5];
	double s[5];
	while(scanf("%d %d",&x,&y)!=EOF){
		memset(a,0,5);
		memset(b,0,5);
		memset(c,0,5);
		for(int i=0;i<5;i++){
			cin>>a[i]>>b[i]>>c[i];
			s[i]=sqrt((a[i]-x)*(a[i]-x)+(b[i]-y)*(b[i]-y));	//s:距离 
		}
		
		int l=0;
		double r=0;
		cin>>l>>r;
		int flag=0;
		int flag1=0;
		
		for(int i=0;i<5;i++){								//判断 	
			if(s[i]<l&&s[i]*r>c[i]){						//血量、距离都满足 
				for(int j=0;j<5;j++){
				if(i!=j&&s[j]<s[i]&&a[i]*b[j]==b[i]*a[j]){	//有人挡路 
					flag1=1;								
					break;
					}
				}
				if(flag1==1){
					continue;								//挡路,这个人杀不死了 
				}
				else{
					flag=1;									//没挡路,这个人可以杀 
				}
			} 
		}
		
		if(flag==1){
			cout<<"Yes"<<endl;
		}else
			cout<<"No"<<endl;
		flag=0; 
		flag1=0;
		
		
		
	} 
} 

Double click to view unformatted code.


Back to problem 32