比赛 |
ctime蒟蒻生日赛 |
评测结果 |
AAAAAAAAAA |
题目名称 |
守望者的逃离 |
最终得分 |
100 |
用户昵称 |
胡嘉兴 |
运行时间 |
0.171 s |
代码语言 |
C++ |
内存使用 |
0.12 MiB |
提交时间 |
2017-10-17 15:08:15 |
显示代码纯文本
#include<stdio.h>
int M, S, T, max = 0, min = 30000000;
void dfs(int dis, int t, int m)
{
int i,j = 0,flag = 0,x,y;
if(t <= T)
{
if(dis > max&&dis <= S)
{
max = dis;
}
if(dis >= S&&t < min)
{
min = t;
}
if(m >= 10)
{
dfs(dis + 60, t + 1, m - 10);
}
else
{
while(flag==0)
{
j++;
for(i = 1;i <= T-t;i++)
{
if(m + i * 4 >= j * 10)
{
break;
}
}
if(t + i + j <= T)
{
if(17 * (i + j) < 60 * j)
{
if(dis + 60 * j > S)
{
x = (S - dis) / 17;
y = (S - dis) % 17;
if(y != 0)
{
x++;
}
if(min > t + x)
{
min = t + x;
}
}
else
{
flag = 1;
dfs(dis + 60 * j, t + i + j, m + i * 4 - j * 10);
}
}
}
else
{
flag = 1;
dfs(dis + 17, t + 1, m);
}
}
}
}
}
int main()
{
freopen("escape.in", "r", stdin);
freopen("escape.out", "w", stdout);
scanf("%d%d%d", &M, &S, &T);
dfs(0, 0, M);
if(min != 30000000)
{
printf("Yes\n%d\n", min);
}
else
{
printf("No\n%d\n", max);
}
fclose(stdin);
fclose(stdout);
return 0;
}