Content
有 \(n\) 个灯,一开始都是亮着的。
有 \(m\) 次操作,每次操作按下开关 \(x\),按下之后所有编号 \(\geqslant x\) 的灯全部熄灭。问你所有的灯第一次被熄灭时的开关编号。
数据范围:\(1\leqslant n,m\leqslant 100,1\leqslant x\leqslant n\)。
Solution
我们可以弄一个数组,每次按下开关 \(x\) 直接将 \(\geqslant x\) 的灯记录下它的答案,注意为了不要重复操作,再开一个数组判断。
Code
#include <cstdio>
using namespace std;
int n, m, ans[107], vis[107];
int main() {
scanf("%d%d", &n, &m);
while(m--) {
int x;
scanf("%d", &x);
for(int j = x; j <= n; ++j)
if(!vis[j]) {
ans[j] = x;
vis[j] = 1;
}
}
for(int i = 1; i <= n; ++i)
printf("%d ", ans[i]);
}