zoukankan      html  css  js  c++  java
  • CodeForces 652B z-sort

    先对序列排个序。

    例如:1 2 3 4 5 6 7

    我们把序列分成两半,前一半是1 2 3 4,后一半是5 6 7

    然后,我们从前一半取最小的一个,再从后一半取最小的一个。。一直操作下去就能构造出答案了。

    由此也可以看到,不可能出现Impossible的情况。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    const int maxn=1000+10;
    int n;
    int a[maxn];
    bool flag[maxn];
    int ans[maxn];
    
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        sort(a+1,a+1+n);
        int st1=1,st2=(n+1)/2+1;
        int tot=0;
        while(1)
        {
            ++tot;
            if(tot%2==1) ans[tot]=a[st1++];
            else ans[tot]=a[st2++];
            if(tot==n) break;
        }
        for(int i=1;i<=n;i++) printf("%d ",ans[i]);
        printf("
    ");
        
        return 0;
    }
  • 相关阅读:
    项目总结
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    浅谈Vue与swiper轮播图框架结合小案例
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5322304.html
Copyright © 2011-2022 走看看