比赛 |
假期找点事儿做题吧 |
评测结果 |
AAAAAAAAAA |
题目名称 |
守望者的逃离 |
最终得分 |
100 |
用户昵称 |
玉带林中挂 |
运行时间 |
0.003 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2017-06-09 19:57:09 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int M,S,T;
int ANS=1e9;
int MOVE;
int main()
{
freopen("escape.in","r",stdin);
freopen("escape.out","w",stdout);
scanf("%d%d%d",&M,&S,&T);
for(int i=0;i<=T;i++)
{//最多使用 i次魔法
int tim=i;
int move=60*i;
int tot=10*i;//需要的魔法点数
if(tot>M)
{//计算需要休息的时间
int delta=tot-M;
int x1=delta/4;
if(delta%4!=0)
x1++;
tim+=x1;
}
if(tim<=T&&move>=S)
{//只用魔法可以到达
ANS=min(ANS,tim);
MOVE=max(MOVE,S);
continue;
}
else if(tim>T)
{//此句很重要
continue;
}
int s=S-move;//需要走的路程
int t1=s/17;
if(s%17!=0)
t1++;
tim+=t1;
if(tim<=T)
{
ANS=min(ANS,tim);
MOVE=max(MOVE,S);
continue;
}
else
{
int t2=T-(tim-t1);
move+=t2*17;
MOVE=max(MOVE,move);
}
}
if(MOVE<S)
{
cout<<"No"<<endl;
cout<<MOVE<<endl;
}
else
{
cout<<"Yes"<<endl;
cout<<ANS<<endl;
}
return 0;
}