ECNU XCPC 2021 November Training #2

B. 模板题

单点时限: 2.0 sec

内存限制: 1024 MB

$n$ 座高为 $h_i$ 的房子,她想知道第 $k$ 矮的房子是第几座。

数据采用

typedef unsigned long long ULL;
int n;// the size of A[]
void Mirror(ULL A[],ULL Key)
{
    ULL seed1=0x7FED7FED7FED7FED,seed2=0xEEEEEEEEEEEEEEEE;
    A[1]=(A[1]+Key)^(seed1+seed2);
    for(int i=2;i<=n;i++)
    {
        A[i]=seed1=((Key << 8)+A[i-1])^(seed1+seed2);
        seed2=A[i-1]+seed1+seed2+(seed2 << 5)+3;
    }
}

这个函数生成

使用这个函数生成数据时,应当先确定初始的A[1]的值然后传入参数A和Key,然后调用该函数,即可得到完整的A数组。

输入格式

仅一行,共 4 个正整数,分别代表题中给出的,n,A[1],Key,k。

输出格式

仅一行,一个正整数ans, 代表第k矮的房子的序号

样例

Input
5 111 222 4
Output
1

提示

第一组样例中数列 A 为:
{7988381732080218006, 74573, 4299032917338325932, 1407959317266570512,14843527916822275023 }
其中第 1 个数值在数列 A 中是第 4 小,故答案为 1

$0 \le n\le 4\cdot 10^7$, A[1]与Key均在unsigned long long范围内

特别地,当房子高度相同时,规定序号小的房子排在序号大的前面