AcWing 4421. 信号
原题链接
困难
作者:
乔巴船长
,
2022-05-14 20:24:53
,
所有人可见
,
阅读 251
C++ 代码
#include<iostream>
using namespace std;
const int N = 1010;
int n,r;
int h[N],s[N];
int idx,res,d;
bool check(){
int cnt=0;
for(int i=1;i<=n;i++){
if(h[i]==0) cnt++;
if(h[i]==1) cnt=0;
if(cnt>(r-1)*2) return true;
if(i==n&&cnt>=r) return true;
}
return false;
}
int main(){
cin>>n>>r;
for(int i=1;i<=n;i++) scanf("%d",&h[i]);
idx=r,d=0;
if(check()) cout<<"-1"<<endl;
else{
idx=r,d=0;
while(d!=n&&idx>0){
if(h[idx]==0) idx--;
if(h[idx]==1){
for(int i=idx-r+1;i<=idx+r-1&&i<=n;i++) s[i]++,d=i;
idx+=2*r-1;
res++;
}
}
for(int i=1;i<=n;i++){
if(s[i]==0){
res=-1;
break;
}
}
cout<<res<<endl;
}
return 0;
}