はまやんはまやんはまやん

hamayanhamayan's blog

Careful Engineer [yukicoder No.734]

https://yukicoder.me/problems/no/734

解法

https://yukicoder.me/submissions/288493

プログラムを書くべきXが満たす条件は以下の通りである。
(手作業でかかる時間)≧(プログラムでかかる時間)
A*60*X ≧ B*X+C*60*60
(A*60-B)*X ≧ C*60*60
ここで(A*60-B)で割るのだが、場合分けをしよう。
 
(A*60-B)>0の場合
X ≧ C*60*60/(A*60-B)となるので、C*60*60/(A*60-B)の切り上げが答え

(A*60-B)=0の場合
0 ≧ C*60*60となるので、条件を満たすXは存在しないので-1が答え
 
(A*60-B)<0の場合
X ≦ C*60*60/(A*60-B) < 0となるので、条件を満たす自然数Xが存在しないので-1,が答え

ll A, B, C;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> A >> B >> C;

    ll a = A * 60 - B;
    ll b = C * 60 * 60;

    if (a <= 0) cout << -1 << endl;
    else cout << (a + b - 1) / a << endl;
}