#D. [HTOI-4] D. Kingdom F

    传统题 1000ms 256MiB

[HTOI-4] D. Kingdom F

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

终于,小A来到了此行的终点:F国首都S城。

小A和一众珂学家正在研究€的核心代码。

题目描述

€的核心代码是一个自动分析程序,这个程序的目标是找到敌军防守最弱的地方并实施打击,在这其中,找到敌军防守最弱的地方有一段不可或缺的代码:排序。

考虑到要使€的运行速度最快,珂学家们使用了快速排序算法,代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,cnt;
mt19937 rnd(time(0));
int a[100005];
void qsort(int l,int r){
	if(l>=r){
		return;
	}
	int i = l,j = r,x = a[rnd()%(r-l+1)+l];
	while(i<=j){
		while(a[i]<x){
			i++;
		}
		while(a[j]>x){
			j--;
		}
		if(i<=j){
			swap(a[i],a[j]);
			i++,j--;
		}
	}
	qsort(l,j);
	qsort(i,r);
}
int main(){
	cin >> n;
	for(int i=0;i<n;i++){
		cin >> a[i];
	}
	qsort(0,n-1);
	for(int i=0;i<n;i++){
		cout << a[i] << " ";
	}
	return 0;
}

这个程序的作用是将 a0a_0an1a_{n-1} 从小到大排序,珂学家们为了防止出现一些特殊的情况,使得复杂度达到最差的 O(n2)O(n^2),他们在选取基准值的时候使用了随机数。

然而,小A发现,随机数的生成并不是真正的随机 ,而是由珂学家们指定的一个序列 kk 得出,具体来说,每次取的随机值分别是 k1,k2,,km,k1,k2,k_1,k_2,\cdot\cdot\cdot,k_m,k_1,k_2,\cdot\cdot\cdot,以此类推。

现在,小A想知道,如果按上面提到的方式来生成随机数,哪个序列能使 程序的递归深度最深

由于满足条件的序列很多,小A只想知道字典序最小的序列。

输入格式

第一行两个正整数 n,mn,m

第二行 mm 个正整数 kik_i

输出格式

输出答案。

样例 #1

样例输入 #1

4 2 
1 0

样例输出 #1

1 4 2 3

提示

对于 10%10\% 的数据,n,m10n,m \le 10

对于 70%70\% 的数据,n,m1000n,m \le 1000

对于 100%100\% 的数据,n,m105n,m \le 10^5ai109a_i \le 10^9

[Rated] HTOI Round 4

未参加
状态
已结束
规则
IOI
题目
4
开始于
2024-8-12 18:00
结束于
2024-8-17 18:00
持续时间
120 小时
主持人
参赛人数
19