Yuulis.log

Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 332 B - Glass and Mug | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 76

問題概要

容量が  G ml のグラスと  M ml のマグカップがあり、最初はグラスとマグカップはいずれも空である。以下の操作を  K 回繰り返した後のグラスとマグカップの水の残量をそれぞれ求めよ。

  • 操作 :
    • グラスにちょうど  G ml 入っている (水で満たされている) とき、グラスの水をすべて捨てる。
    • そうではなく、マグカップが空であるとき、マグカップを水で満たす。
    • 上のいずれでもないとき、マグカップが空になるかグラスが水で満たされるまで、マグカップからグラスに水を移す。

制約

  • 入力はすべて整数。
  •  1 \leq K \leq 100
  •  1 \leq G \lt M \leq 1000

考察

 K 100 以下と小さいので、操作を逐一シミュレーションしていけばよいだろう。

コード

#include <bits/stdc++.h>
using namespace std;

// ======================================== //

int main()
{
    int K, G, M;
    cin >> K >> G >> M;

    int glass = 0, cup = 0;
    while (K--)
    {
        if (glass == G)
            glass = 0;
        else if (cup == 0)
            cup = M;
        else
        {
            int tmp = min(G - glass, cup);
            glass += tmp;
            cup -= tmp;
        }
    }

    cout << glass << " " << cup << endl;
}

atcoder.jp

実装時間 : 5分