/*
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1648
题意:给你n条线段判断是否相交
*/
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct Line
{
double x1,x2,y1,y2;
}a[2009];
int f(int n,int m)
{
double q=(a[n].x2-a[n].x1)*(a[m].y1-a[n].y1)-(a[n].y2-a[n].y1)*(a[m].x1-a[n].x1);
double w=(a[n].x2-a[n].x1)*(a[m].y2-a[n].y1)-(a[n].y2-a[n].y1)*(a[m].x2-a[n].x1);
double e=(a[m].x2-a[m].x1)*(a[n].y1-a[m].y1)-(a[m].y2-a[m].y1)*(a[n].x1-a[m].x1);
double r=(a[m].x2-a[m].x1)*(a[n].y2-a[m].y1)-(a[m].y2-a[m].y1)*(a[n].x2-a[m].x1);
if(q*w<0&&r*e<0) return 1;
return 0;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
int flag=1;
for(int i=0;i<n;i++) scanf("%lf%lf%lf%lf",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(f(i,j))
{
flag=0;
break;
}
}
}
if(flag==0) printf("burned!\n");
else printf("ok!\n");
}
return 0;
}
n条线段是否相交--zoj1648
最新推荐文章于 2022-08-19 16:11:30 发布