题解 | #最小的数字#

最小的数字

https://ac.nowcoder.com/acm/contest/57683/A

//tmd真的就tmd

其实看懂第三行那个条件就好了,元素差值越大距离就要越大,那么直接排序后判断即可

如果前后两个元素的差值小于它们的距离即1,那么其他元素跟当前枚举的元素就更不符合题意,也就无法交换,直接判定该序列不合法

反之如果前后两个元素的差值都大于等于它们的距离即1,那么其他元素也必然符合

#include<bits/stdc++.h>
using namespace std;

int a[1005];

int main()
{
    int t;    cin>>t;
    while(t--){
        int n;    cin>>n;
        for(int i=1; i<=n; i++)    scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        bool f = true;
        for(int i=1; i<n; i++){
            if(a[i+1]-a[i]<1){
                f = false;
                break;
            }
        }
        if(!f)    cout<<-1<<endl;
        else{
            for(int i=1; i<=n; i++)
                cout<<a[i]<<' ';
            cout<<endl;
        }
    }
    return 0;
}
全部评论

相关推荐

06-06 03:40
已编辑
电子科技大学 Java
在秋招的小白菜很想养修勾:一眼 苍穹外卖+谷粒商城,项目换一换吧,可以找一些付费知识星球博主带带,避免烂大街。多投投大厂,背背八股,你这学历乱杀了,等实习经验到位,到时候大厂闭眼选
投递美团等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务