话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,“徐队”的称呼逐渐被“徐总”所取代,海东集团(HDU)也算是名副其实了。
创业是需要地盘的,HDU向钱江肉丝高新技术开发区申请一块用地,很快得到了批复,据说这是因为他们公司研发的“海东牌”老鼠药科技含量很高,预期将占全球一半以上的市场。政府划拨的这块用地是一个多边形,为了描述它,我们用逆时针方向的顶点序列来表示,我们很想了解这块地的基本情况,现在请你编程判断HDU的用地是凸多边形还是凹多边形呢?
创业是需要地盘的,HDU向钱江肉丝高新技术开发区申请一块用地,很快得到了批复,据说这是因为他们公司研发的“海东牌”老鼠药科技含量很高,预期将占全球一半以上的市场。政府划拨的这块用地是一个多边形,为了描述它,我们用逆时针方向的顶点序列来表示,我们很想了解这块地的基本情况,现在请你编程判断HDU的用地是凸多边形还是凹多边形呢?
Input
输入包含多组测试数据,每组数据占2行,首先一行是一个整数n,表示多边形顶点的个数,然后一行是2×n个整数,表示逆时针顺序的n个顶点的坐标(xi,yi),n为0的时候结束输入。
Output
对于每个测试实例,如果地块的形状为凸多边形,请输出“convex”,否则输出”concave”,每个实例的输出占一行。
Sample Input
4 0 0 1 0 1 1 0 1 0
Sample Output
convex import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s=new Scanner(System.in); while(true){ int x,y; int n=s.nextInt(); if(n==0){ break; } Point[] p=new Point[n]; for(int i=0;i<n;i++){ x=s.nextInt(); y=s.nextInt(); p[i]=new Point(x,y); } boolean tag=true; int j,k,t; for(int i=0;i<n;i++){ j=i; k=i+1; t=i+2; if(k==n){ k=0; } if(t==n+1){ t=1; } if(t==n){ t=0; } Point p1=new Point(p[k].x-p[j].x,p[k].y-p[j].y); Point p2=new Point(p[t].x-p[k].x,p[t].y-p[k].y); int res=p1.x*p2.y-p2.x*p1.y; if(res<0){ tag=false; break; } } if(tag){ System.out.println("convex"); }else{ System.out.println("concave"); } } } } class Point{ int x,y; public Point(int x,int y){ this.x=x; this.y=y; } }