码迷,mamicode.com
首页 > 其他好文 > 详细

繁华模拟赛 Evensgn玩序列

时间:2016-09-24 23:24:14      阅读:377      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

技术分享

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 5000;
int n,a[maxn],b[maxn],c[maxn],rka[maxn],rkb[maxn],rkc[maxn];
bool visa[maxn],visb[maxn],visc[maxn];
int rk,rec;
int main(){
    freopen("perm.in","r",stdin);
    freopen("perm.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i = n;i >= 1;i--){
        cin>>a[i];
        visa[a[i]] = true;
    }
    for(int i = n;i >= 1;i--){
        cin>>b[i];
        visb[b[i]] = true;
    }
    for(int i = n;i >= 1;i--){
        rk = -1;
        for(int j = 0;j <= a[i];j++) if(visa[j]) rk++;
        visa[a[i]] = false;
        rka[i] = rk;
    }
    for(int i = n;i >= 1;i--){
        rk = -1;
        for(int j = 0;j <= b[i];j++) if(visb[j])rk++;
        visb[b[i]] = false;
        rkb[i] = rk;
    }
    for(int i = 1;i <= n;i++){
        rkc[i] += rka[i] + rkb[i];
        rkc[i+1] += rkc[i] / i;
        rkc[i] %= i;
    }
    memset(visc,true,sizeof(visc));
    for(int i = n;i >= 1;i--){
        rec = rk = 0;
        while(1){
            if(visc[rec]) rk++;
            if(rk > rkc[i]) break;
            rec++;
        }
        visc[rec] = false;
        cout<<rec<<" ";
    }
    return 0;
}

 

繁华模拟赛 Evensgn玩序列

标签:

原文地址:http://www.cnblogs.com/hyfer/p/5904440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!