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; }