P10872 [COTS 2022] 移位 Maliand

题目背景

译自 [Izborne Pripreme 2022 (Croatian IOI/CEOI Team Selection)](https://hsin.hr/pripreme2022/) D1T2。$\texttt{2s,0.5G}$。 [SPJ link](https://www.luogu.com.cn/paste/9qlivbk0)。

题目描述

给定非负整数 $N,K,L$,试构造两个 $01$ 序列 $S,T$,满足: - $S,T$ 的长度为 $N$; - $S$ 中恰好有 $K$ 个 $1$,$T$ 中恰有 $L$ 个 $1$; - $f(S,T)$ 是所有可能的 $f(S,T)$ 中最小的。 定义 $f(S,T)$ 为**任意**循环移位 $S,T$ 后,$\sum_{i=1}^{N} S_i\operatorname{and} T_i$ 的最大值,其中 $\mathrm{and}$ 表示按位与运算。 请你构造出 $S,T$。

输入格式

一行三个整数 $N,K,L$。

输出格式

第一行一个整数 $F$,表示 $f(S,T)$ 的最小值; 接下来两行分别描述序列 $S,T$。相邻元素之间不需要加空格。 若有多解,输出任意一个均可。

说明/提示

对于 $100\%$ 的数据,保证 $1\le N\le 5\times 10^5$,$0\le K,L\le N$。 | 子任务编号 | 分值 | 约束 | |:-----:|:------:|:-------:| | $1$ | $5$ | $1\le N\le 13$ | | $2$ | $50$ | $1\le N\le 5\, 000$ | | $3$ | $45$ | 无额外约束 | 【评分方式】 如果你回答对了 $F$,可以得到 $20\%$ 的分数; 在此基础下,如果你的 $S,T$ 满足条件,将获得剩下 $80\%$ 的分数。 如果只打算回答第一问,也要任意输出两个符合条件 $1,2$ 的 $01$ 序列,否则不保证能得到分数。