CFCF1498D.Bananas in a Microwave

普及+/提高

官方

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你有一个故障的微波炉,你想在里面放一些香蕉。你有 nn 个时间步,在微波炉彻底坏掉之前。在每个时间步,微波炉会显示一个新的操作。

kk 为当前微波炉中的香蕉数量。初始时,k=0k=0。在第 ii 个操作中,你会得到三个参数 tit_ixix_iyiy_i。根据 tit_i 的值,你需要执行以下操作之一:

类型 1:(ti=1t_i=1xix_iyiy_i)——选择一个 aia_i,满足 0aiyi0 \le a_i \le y_i,并执行如下更新 aia_i 次:k:=(k+xi)k := \lceil (k + x_i) \rceil

类型 2:(ti=2t_i=2xix_iyiy_i)——选择一个 aia_i,满足 0aiyi0 \le a_i \le y_i,并执行如下更新 aia_i 次:k:=(kxi)k := \lceil (k \cdot x_i) \rceil

注意,xix_i 可以是小数。具体细节见输入格式。同时,x\lceil x \rceil 表示大于等于 xx 的最小整数。

在第 ii 个时间步,你必须恰好应用第 ii 个操作一次。

对于每个 jj1jm1 \le j \le m,输出你能恰好得到 jj 个香蕉的最早时间步。如果无法得到恰好 jj 个香蕉,输出 1-1

输入格式

第一行包含两个用空格分隔的整数 nn1n2001 \le n \le 200)和 mm2m1052 \le m \le 10^5)。

接下来有 nn 行,每行描述第 ii 个时间步的操作。每行包含三个用空格分隔的整数 tit_ixix'_iyiy_i1ti21 \le t_i \le 21yim1 \le y_i \le m)。

注意,给定的是 xix'_i,即 xix_i10510^5 倍。因此,xi=xi105x_i = \dfrac{x'_i}{10^5}

对于类型 1 操作,1xi105m1 \le x'_i \le 10^5 \cdot m;对于类型 2 操作,105<xi105m10^5 < x'_i \le 10^5 \cdot m

输出格式

输出 mm 个整数,第 ii 个整数表示最早能获得恰好 ii 个香蕉的时间步(或 1-1,如果无法获得)。

输入输出样例

  • 输入#1

    3 20
    1 300000 2
    2 400000 2
    1 1000000 3

    输出#1

    -1 -1 1 -1 -1 1 -1 -1 -1 3 -1 2 3 -1 -1 3 -1 -1 -1 3
  • 输入#2

    3 20
    1 399999 2
    2 412345 2
    1 1000001 3

    输出#2

    -1 -1 -1 1 -1 -1 -1 1 -1 -1 3 -1 -1 -1 3 -1 2 -1 3 -1

说明/提示

在第一个样例输入中,来看如何在三步内得到 1616 个香蕉。初始时 k=0k=0

  • 第一步,选择 a1=2a_1=2,应用类型 1 操作 k:=(k+3)k := \lceil(k+3)\rceil 两次。此时 k=6k=6
  • 第二步,选择 a2=0a_2=0kk 保持不变。
  • 第三步,选择 a3=1a_3=1,应用类型 1 操作 k:=(k+10)k := \lceil(k+10)\rceil 一次。此时 k=16k=16

可以证明,无法在更早的时间步内得到 k=16k=16

在第二个样例输入中,来看如何在两步内得到 1717 个香蕉。初始时 k=0k=0

  • 第一步,选择 a1=1a_1=1,应用类型 1 操作 k:=(k+3.99999)k := \lceil(k+3.99999)\rceil 一次。此时 k=4k=4
  • 第二步,选择 a2=1a_2=1,应用类型 2 操作 k:=(k4.12345)k := \lceil(k \cdot 4.12345)\rceil 一次。此时 k=17k=17

可以证明,无法在更早的时间步内得到 k=17k=17

首页