首页 > 代码库 > 繁华模拟赛 Evensgn玩序列
繁华模拟赛 Evensgn玩序列
#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玩序列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。