算账

Description

诺德镇有很多宝物,比如夹克老爷的宝算盘就可以通过运行一段C++程序来帮助算账
有一天夹克老爷的账房跟师爷说想要把自家长工的工资表排一下序,因此师爷迅速提起毛笔写了以下算法。

#include <algorithm>
int randint(int L,int R) {
        static long long X = 1;
        const long long A = __A__, B = __B__;
        X = (X * X + A * X + B) % 99824353LL;
        return X % (R - L + 1) + L;
}
void Qsort(int A[], int L, int R)
{
        if (L >= R)
                return;
        int l = L;
        int r = R;
        int index = randint(L, R);
        int key = A[index];
        std::swap(A[l], A[index]);
        while (l < r)
        {
                while (l < r && A[r] >= key)
                        --r;
                A[l] = A[r];
                while (l < r && A[l] <= key)
                        ++l;
                A[r] = A[l];
        }
        A[l] = key;
        Qsort(A, L, l - 1);
        Qsort(A, l + 1, R);
}

最终调用的时候会按照以下方法调用

Qsort(A_list,1,N);

这里\(A\_list\)数组代表长工的工资单,它是一个下标从\(1\)开始,在\(N\)处结束,长度为\(N\)的一个\(1\)~\(N\)的排列。

师爷很快且正确地完成了这项工作,于是迅速把这份代码交给了账房,并声称这份代码比南越的 采风官跑的都快。然而经验丰富的账房先生却一眼发现了问题,即对于特定的\(A\_List\)输入,\(Qsort\) 函数的递归深度会变得非常之高。但是账房先生一时语塞,竟然把刚刚想出来的特定\(A\_List\)输入忘记了!

现在,请聪明的你请帮助账房先生说出他刚刚忘记的特定\(A\_List\),使得\(Qsort\)函数的递归深度达到 最大值。账房先生比较喜欢看大布告,所以当有多个符合要求的\(A\_List\)时,输出其中字典序最大的。

Format

Input

一行一共三个整数 \(N\),\(\_\_A\_\_\),\(\_\_B\_\_ \)
\(N\)表示\(A\_List\)长度,\(\_\_A\_\_\),\(\_\_B\_\_\)的意义与\(randint\)中的响应变量意义相同。
其中\(1 \leq N \leq 100,000\),\(0 \leq \_\_A\_\_,\_\_B\_\_ < 99824353\)

Output

输出一行\(N\)个整数,第\(i\)个数描述了所求\(A\_List\)中原下表为\(i\)的位置对应的数。

Sample 1

Input

3 1 2

Output

3 1 2

Limitation

1s, 128MiB for each test case.

Hint

样例解释

step1. L=1,R=3,index=2,A_list[1:3]=[3,1,2] ->[1,3,2]
step2. L=2,R=3,index=2,A_list[2:3]=[3,2]->[2,3]
step3. L=3,R=3, return void

数据范围

对于30%的数据,\(1 \leq N \leq 10\);
另有20%的数据,\(1 \leq N \leq 12\),\(1 \leq \_\_A\_\_,\_\_B\_\_ \leq 4\);
对于50%的数据,\(1 \leq N \leq 2000\);
对于100%的数据,\(1 \leq N \leq 100000\),\(0 \leq \_\_A\_\_,\_\_B\_\_ < 99824353\)

Source

CSP 2019 综合测试题(四)

信息

ID
1023
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者