a915

輸入說明 :

第一行输入一个正整数n。 接下来n行,第i行有两个个以空格隔开的正整数x[i]和y[i],表示第i个点为(x[i],y[i])。

輸出說明 :

输出n行,第i行表示排序好后第i个点的坐标。

qsort cmp函式也可以來比各種條件的排序

#include<stdio.h>
#include<stdlib.h>
struct Point
{
    int x;
    int y;    
};

int cmp(const void * pa,const void *pb)
{
    Point *p1 =(Point *)pa; 
    Point *p2 =(Point *)pb;

    if(p1->x != p2->x)
        return p1->x > p2->x;
    else
        return p1->y > p2->y;
}
Point a[1000];

int main()
{
    int N;
    int i;

    while(scanf("%d",&N)!=EOF)
    {
        for(i=0;i<N;i++)
            scanf("%d%d",&a[i].x,&a[i].y);
        qsort(a,N,sizeof(Point),cmp);   //先比x在比y大的在前面 

        for(i=0;i<N;i++)
            printf("%d %d\n",a[i].x,a[i].y);
    }
    return 0;
}