View Code of Problem 32

#include <iostream>
#include <math.h>
using namespace std;

int main(int argc, char const *argv[])
{
    int X,Y,x[5],y[5],hp[5],L;
    double R,dis1,dis2;
    bool flag;
    while(scanf("%d %d",&X,&Y)!=EOF){
        for (int i = 0; i < 5; i++)
            scanf("%d %d %d",&x[i],&y[i],&hp[i]);
        scanf("%d %lf",&L,&R);
        
        flag = false;
        
        for (int i = 0; i < 5; i++)
        {
            dis1 = sqrt((x[i]-X)*(x[i]-X)+(y[i]-Y)*(y[i]-Y));
            if (L>=dis1&&R*dis1>=hp[i])
            {
                for(int j=0;j<5;j++){
                    dis2 =sqrt((x[j]-X)*(x[j]-X)+(y[j]-Y)*(y[j]-Y));
                    if(i!=j&&((x[i]-X)*(y[j]-Y)==(x[j]-X)*(y[i]-Y))&&dis2<dis1&&dis2*R<hp[j]){
                        flag=0;
                    }
                    else
                        flag=1;
                }
            }
            if(flag)
                break;
        }
        
        if (!flag)
            printf("No\n");
        else
            printf("Yes\n");
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 32