#P1028. 状态翻转与分组

状态翻转与分组

状态翻转与分组

题目描述

有 n 个元素,初始状态均为 1。接着,有以下操作流程:

  1. 先给定一个整数 k

  2. 系统会 任选 k 个元素,将它们的状态翻转(1 变 0),具体是哪 k 个未知 接下来,你需要为 每个元素 预先指定一个操作(共四种):

    • 操作1:放入集合 A,不翻转
    • 操作2:放入集合 A,并翻转
    • 操作3:放入集合 B,不翻转
    • 操作4:放入集合 B,并翻转

示例:当 n=5,操作序列为12341时:

  • 元素1、2、5 放入集合A(2被翻转)
  • 元素3、4 放入集合B(4被翻转)

对于操作后的状态,需要满足以下条件:

  1. 集合 A 中状态为 1 的元素数量 = 集合 B 中状态为 1 的元素数量
  2. 允许某个集合为空
  3. 只比较状态为 1 的数量

形式化的,给定 n 和 k,你需要输出一个长度为 n 的字符串,表示每个元素的操作(1-4); 对于你输出的字符串,你需要保证使得无论系统翻转哪 k 个元素,最终集合 A 和集合 B 中状态为 1 的元素数量相等。如果不存在这样的操作字符串,则输出 -1。

输入格式

一行两个整数 nn 和 kk ( 1≤n≤104,0≤k≤n1 \leq n \leq 10^4, 0\le k\le n )。

输出格式

长度为 nn 的有效操作字符串(使用字符 1−41-4 ),如果不可能,则为 −1-1

样例 1

4 4
1234

提示

对于样例1: 我们一个可能的方案是:将第1个元素放入集合A不翻转(操作1),将第2个元素放入集合A翻转(操作2),将第3个元素放入集合B不翻转(操作3),将第4个元素放入集合B并翻转(操作4)。无论系统翻转哪4个元素,集合A和集合B中状态为1的元素数量都会相等。