7-10 阿生的粉丝团 (30 分)

  • 2019 年 11 月 8 日
  • 筆記

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/shiliang97/article/details/101473111

7-10 阿生的粉丝团 (30 分)

夭折了,阿生竟然有粉丝团了,而且还是清一色的妹子。激动的阿生忍不住咬了自己一下,确定一下不是梦,好吧,还真是个梦。醒来的阿生悲痛欲绝,只想知道梦境中她们平面坐标的逆时针排列,你能帮帮他吗。

输入格式:

输入每行给出一组整数x,y代表梦境中阿生粉丝的平面坐标,并且保证第一个的坐标永远是(0 0): -1000= x <= 1000, -1000<= y <= 1000

输出格式:

按照(%d,%d)的格式输出即可

输入样例:

0 0  70 -50  60 30  -30 -50  80 20  50 -60  90 -20  -30 -40  -10 -60  90 10

输出样例:

(0,0)  (-30,-40)  (-30,-50)  (-10,-60)  (50,-60)  (70,-50)  (90,-20)  (90,10)  (80,20)  (60,30)
#include<iostream>  #include<vector>  #include<algorithm>  struct node{  	int x;  	int y;  };  bool cmp(node n1,node n2){  	int f1,f2;  	if(n1.x==0&&n1.y==0){  		f1=5;  	}if(n2.x==0&&n2.y==0){  		f2=5;  	}    	if(n1.x>=0&&n1.y>=0){  		f1=2;  	}if(n1.x<=0&&n1.y>0){  		f1=1;  	}if(n1.x<=0&&n1.y<=0){  		f1=4;  	}if(n1.x>=0&&n1.y<0){  		f1=3;  	}if(n2.x>=0&&n2.y>=0){  		f2=2;  	}if(n2.x<=0&&n2.y>0){  		f2=1;  	}if(n2.x<=0&&n2.y<=0){  		f2=4;  	}if(n2.x>=0&&n2.y<0){  		f2=3;  	}  	if(f1!=f2){  		return f1>f2;  	} else if(f1==4){  		f1=n1.x*n2.y;  		f2=n2.x*n1.y;  		return f1>f2;  	}else if(f1==3){  		f1=n1.x*n2.y;  		f2=n2.x*n1.y;  		return f1>f2;  	}  	return n1.x!=n2.x ? n1.x>n2.x:n1.y>n2.y;  }  using namespace std;  int main(){  	int a,b;  	vector<node>no;  	while(scanf("%d %d",&a,&b)==2){  		node n;  		n.x=a;  		n.y=b;  		no.push_back(n);  	}  	sort(no.begin(),no.end(),cmp);  	for(int i=0;i<no.size();i++){  		cout<<"("<<no[i].x<<","<<no[i].y<<")"<<endl;  	}  return 0;  }