题目描述
输入一行整数,按绝对值大小从大到小排列,绝对值一样的,负在排后面
输入
3 -2 -5 6
输出
6 -5 3 -2
样例输入 Copy
5 -5 -3 3
样例输出 Copy
5 -5 3 -3
#include<bits/stdc++.h>
using namespace std;
int n=4,a[114514];
bool cmp(int x,int y)
{
if(abs(x)==abs(y))
{
if(x<0)return y+1>x;
else if(y<0)return x+1>y;
}
else if(abs(x)>abs(y))return abs(x)>abs(y);
else if(abs(x)<abs(y))return abs(y)>abs(x);
}
int main(){
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
最后面的两个数排不了