竞赛讨论区 > 求助第四题
头像
码农小王a
发布于 01-05 22:42
+ 关注

求助第四题

#include<stdio.h>

int main(){

int n,m,count=0; //n为总路程 m为生命上限 count为途中安全点的数量

int i,j,k;

scanf("%d %d",&n,&m);

int M=m,t=n-1; // M 为当前生命

int A[n];

int B[n];

for(i=0;i<n;i++){ //输入马马的路程至A[n],并保存安全区的位置至B[n]

scanf("%d",&A[i]);

if(A[i]==0){

B[i]=i;

count++;

}

else

B[i]=-1;

}

int C[count],sum=0;

for(j=0;j<n;j++){ //算出每两个安全点之间所扣除的血量 存储在C[count]

if(B[j]!=j){

sum+=A[j];

C[j]=-1;

}

else

C[j]=sum;

}

int index=0;

for(k=0;k<n;k++){ // 模拟路径

if(C[k]!=-1){ //抵达下个安全点所扣除的血量

if(M>C[k]){

M-=C[k];

}

else {

if(m>C[k]){ //如果生命上限大于抵达下一安全点所扣的血量则 选择加血

t+=(m-M);

M=m;

}

else if(m<=C[k])

index=1;

}

}

}

if(index)

printf("NO");

else

printf("%d",t);

}

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐