1 条题解

  • 0
    @ 2025-10-8 16:49:36
    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e6;
    struct node
    {
        int id,x,z;
    }a[N+10];
    bool cmp(node a,node b)
    {
        if(a.z!=b.z) return a.z<b.z;
        else return a.id<b.id;
    
      //a 和 b比较,开始时 a 在前面, b 在后面。
      //return 1 表示ab不交换位置 ,return 0 表示需要交换位置
    }
    int main()
    {
        int n;scanf("%d", &n);
        for(int i=1;i<=n;i++)scanf("%d", &a[i].x),a[i].id=i,a[i].z=abs(a[i].x);
        
        sort(a+1,a+n+1,cmp);//如果想要控制sort排序规则,则可以添加一个bool函数,函数定义如cmp
        
        for(int i=1;i<=n;i++)printf("%d ", a[i].x);
        return 0;
    }
    
    • 1

    信息

    ID
    340
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    378
    已通过
    98
    上传者