下载了数据,用例是Yes 330, 我的是Yes,331, 不知道为什么会多一个
#include<stdio.h>
int
main(){
int M,S,T,cur_d,cur_t,temp;
scanf("%d%d%d",&M,&S,&T);
cur_t=cur_d=0;
while(cur_t <T && cur_d <S){
if(M>=10){
cur_t++;
cur_d+=60;
M-=10; //加减法比乘除法更快,而且后面只要大于等于10就要用一次
}else{
temp=(10-M+3)/4; //3==(4-1),即向上取整
if(T-cur_t>=temp+1){ //还有一秒的施法时间
if(temp*17+cur_d>=S){
while(cur_d<S){
cur_d+=17;
cur_t++;
}
}else{
M+=temp*4;
cur_t+=temp;
}
}else{
while(cur_t<T){
cur_d+=17;
cur_t++;
}
}
}
}
if(cur_d <S){
printf("No\n");
printf("%d",cur_d);
}else{
printf("Yes\n");
printf("%d",cur_t);
}
return 0;
}