比赛 假期找点事儿做题吧 评测结果 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;
}