public class UjiTarif {

    static int lulus = 0;
    static int gagal = 0;

    public static void main(String[] args) {
        periksa("tarif 0 menit (gratis)", 0, tarif(0));
        periksa("tarif 14 menit (masih gratis)", 0, tarif(14));
        periksa("tarif 15 menit (mulai dikenakan)", 5000, tarif(15));
        periksa("tarif 60 menit (jam pertama penuh)", 5000, tarif(60));
        periksa("tarif 61 menit (jam kedua dimulai)", 8000, tarif(61));
        periksa("tarif 120 menit (dua jam pas)", 8000, tarif(120));
        periksa("tarif 240 menit (empat jam)", 14000, tarif(240));
        periksa("tarif 600 menit (batas harian)", 20000, tarif(600));
        System.out.println();
        System.out.println("Ringkasan: " + lulus + " PASS, " + gagal + " FAIL");
        if (gagal > 0) {
            System.exit(1);
        }
    }

    // Bandingkan nilai harapan dengan nilai nyata, catat hasilnya.
    static void periksa(String nama, int harapan, int nyata) {
        if (harapan == nyata) {
            lulus++;
            System.out.println("PASS " + nama);
        } else {
            gagal++;
            System.out.println("FAIL " + nama + ": harapan " + harapan + ", nyata " + nyata);
        }
    }

    // 0-14 menit gratis; 15-60 menit Rp5.000; setelahnya Rp3.000 per jam
    // dimulai; total dibatasi Rp20.000 per hari.
    static int tarif(int menit) {
        if (menit < 15) {
            return 0;
        }
        int total = 5000 + 3000 * ((menit - 60 + 59) / 60);  // pembagian bulat ke atas
        return Math.min(total, 20000);
    }
}
