Problem 1785. -- 点排序

1785: 点排序

Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld
Submitted: 383  Accepted: 115
[Submit][Status][Web Board]

Description

有若干二维坐标系里的点,每个点包括横纵坐标,现在需要你编写程序对这些点进行排序。
排序的依据就是各点与原点的距离,距离越小的排在前面。
如果距离相等的则按照横纵坐标的和小的在前。
如果横纵坐标的和也相等,则按照原始相对位置不变。
程序中将点的横纵坐标存放到一个结构体中(point),它包含2个成员横纵坐标(int x,y)。

注意:main函数已经给定(如下所示)。

           请将程序补充完整。

           提交时只需要提交自己补充的代码部分,不需要提交给定的main函数的代码部分。

#include<stdio.h>
int main()
{
    int n;
    struct point p[100];
    while(scanf("%d",&n)!=EOF)
    {
        input(p,n);  //读点的数据
        sort(p,n);   //排序
        print(p,n);  //输出所有点的信息
    }
    return 0;
}

Input

包含多组测试数据,每组测试数据包含一行。
每行第一个正整数n(不超过100),表示二维坐标点的个数。后面紧接着2n个整数,从前往后每2个整数表示一个点的坐标,横坐标在前。
相邻数据之间用一个空格隔开。

Output

每组测试数据输出占1行。依次输出排序后的n个点,每个点的坐标按照“(x,y)”的形式输出。(详见样例输出)

Sample Input

4 1 0 1 1 2 2 0 2

Sample Output

(1,0)(1,1)(0,2)(2,2)

[Submit][Status][Web Board]