CFCF1498D.Bananas in a Microwave
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你有一个故障的微波炉,你想在里面放一些香蕉。你有 n 个时间步,在微波炉彻底坏掉之前。在每个时间步,微波炉会显示一个新的操作。
设 k 为当前微波炉中的香蕉数量。初始时,k=0。在第 i 个操作中,你会得到三个参数 ti、xi、yi。根据 ti 的值,你需要执行以下操作之一:
类型 1:(ti=1,xi,yi)——选择一个 ai,满足 0≤ai≤yi,并执行如下更新 ai 次:k:=⌈(k+xi)⌉。
类型 2:(ti=2,xi,yi)——选择一个 ai,满足 0≤ai≤yi,并执行如下更新 ai 次:k:=⌈(k⋅xi)⌉。
注意,xi 可以是小数。具体细节见输入格式。同时,⌈x⌉ 表示大于等于 x 的最小整数。
在第 i 个时间步,你必须恰好应用第 i 个操作一次。
对于每个 j,1≤j≤m,输出你能恰好得到 j 个香蕉的最早时间步。如果无法得到恰好 j 个香蕉,输出 −1。
输入格式
第一行包含两个用空格分隔的整数 n(1≤n≤200)和 m(2≤m≤105)。
接下来有 n 行,每行描述第 i 个时间步的操作。每行包含三个用空格分隔的整数 ti、xi′ 和 yi(1≤ti≤2,1≤yi≤m)。
注意,给定的是 xi′,即 xi 的 105 倍。因此,xi=105xi′。
对于类型 1 操作,1≤xi′≤105⋅m;对于类型 2 操作,105<xi′≤105⋅m。
输出格式
输出 m 个整数,第 i 个整数表示最早能获得恰好 i 个香蕉的时间步(或 −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
说明/提示
在第一个样例输入中,来看如何在三步内得到 16 个香蕉。初始时 k=0。
- 第一步,选择 a1=2,应用类型 1 操作 k:=⌈(k+3)⌉ 两次。此时 k=6。
- 第二步,选择 a2=0,k 保持不变。
- 第三步,选择 a3=1,应用类型 1 操作 k:=⌈(k+10)⌉ 一次。此时 k=16。
可以证明,无法在更早的时间步内得到 k=16。
在第二个样例输入中,来看如何在两步内得到 17 个香蕉。初始时 k=0。
- 第一步,选择 a1=1,应用类型 1 操作 k:=⌈(k+3.99999)⌉ 一次。此时 k=4。
- 第二步,选择 a2=1,应用类型 2 操作 k:=⌈(k⋅4.12345)⌉ 一次。此时 k=17。
可以证明,无法在更早的时间步内得到 k=17。