1 条题解
-
0
注:本题解代码和思路源自官方代码
考虑维护两个变量,分别记录到现在为止能跳到的花的最小值和最大值,显然在区间 的花都能被跳到,如果此时的花符合条件就输出 并更新最小值和最大值,否则输出 。
#include<bits/stdc++.h> using namespace std; int a[200005]; int main() { int n,k; cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i]; int minn=a[1],maxn=a[1];//一开始的最小值和最大值都是第一朵花的高度 cout<<"1 "; for(int i=2;i<=n;i++) { if(minn-k<=a[i]&&a[i]<=maxn+k) { cout<<"1 "; minn=min(minn,a[i]); maxn=max(maxn,a[i]); }//如果满足条件就更新 else cout<<"0 "; } return 0; }
- 1
信息
- ID
- 12536
- 时间
- 5000ms
- 内存
- 600MiB
- 难度
- 5
- 标签
- 递交数
- 29
- 已通过
- 13
- 上传者