传统题 1000ms 256MiB

启动按键消抖

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

按键在按下和松开时可能产生短暂抖动。程序每隔固定时间读取一次按键电平,需要确认电平连续稳定后再改变按键状态。

题目描述

按键原始电平为 0(松开)或 1(按下)。按键的确认状态初始为 0。依次处理每个采样值,规则如下:

  1. 若采样值与当前确认状态相同,将“连续相反次数”清零。
  2. 若采样值与当前确认状态相反,将“连续相反次数”加一。当它达到阈值 k 时,确认状态立即切换为该采样值,并将计数清零。
  3. 每次确认状态从 0 切换为 1 时,记为一次有效按下,记录当前采样位置。确认状态从 1 切换为 0 时不记录。

采样位置从 1 开始编号。请输出全部有效按下的位置。

输入格式

第一行包含两个整数 n、k,分别表示采样次数和确认状态切换所需的连续采样次数。

第二行包含 n 个整数,每个整数为 0 或 1,表示依次读取的原始电平。

输出格式

第一行输出有效按下的次数。

第二行按时间顺序输出各次有效按下的采样位置,位置之间用一个空格分隔。若没有有效按下,第二行输出空行。

样例

19 3
1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 1 0 0
2
5 17

样例解释

第 3 至 5 次采样连续为 1,故在位置 5 确认第一次按下。第 9 至 11 次采样连续为 0,确认松开。第 15 至 17 次采样连续为 1,在位置 17 确认第二次按下。其余短暂的电平变化均不足 k 次。

数据范围

1 ≤ n ≤ 100000,1 ≤ k ≤ n。时间限制:1 秒;内存限制:256 MiB。

ASC2026考核C语言训练题二(AC这10道提前知道51考核任务)

未参加
状态
已结束
规则
ACM/ICPC
题目
10
开始于
2026-10-1 0:00
结束于
2026-10-6 0:00
持续时间
120 小时
主持人
参赛人数
121