Тости#510

Тости (Розбір)

Якщо n = 0, то відповідь .

Якщо кількість тостів не перевищує місткість сковороди k~(n \le k), то на обсмаження всіх тостів з двох сторін знадобиться хвилини.

Оскільки кожен тост потрібно обсмажити з обох сторін, всього потрібно обсмажувань. Кожне обсмаження (одночасне розміщення на сковороді до тостів) займає хвилини.

Отже, якщо n > k, то мінімальний час, необхідний для обсмаження всіх тостів, дорівнює 2 \cdot \lceil 2n / k \rceil хвилин.

Приклад

Нехай маємо n = 3 тости, і сковорода вміщує одночасно k = 2 тости. Позначимо сторони тостів як 1a, 1b, 2a, 2b, 3a, 3b.

Тоді всі сторін можна обсмажити за хвилин наступним чином:

Разом: обсмаження по хвилини, тобто хвилин.

Реалізація алгоритму

Читаємо вхідні дані.

scanf("%d %d", &n, &k);

Якщо n = 0, то відповідь .

if (!n) res = 0; else

Якщо кількість тостів не перевищує місткість сковороди, то на їх обсмаження знадобиться хвилини.

if (n <= k) res = 4; else
{

Кожен тост необхідно обсмажити з двох сторін, тобто всього потрібно обсмажити сторін. При цьому одне обсмаження (незалежно від кількості тостів на сковороді, що не перевищує її місткість) займає хвилини.

  res = 2 * n / k;
  if (2 * n % k) res++;
  res *= 2;
}

Виводимо відповідь.

printf("%d\n", res);

Java реалізація

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();
    int k = con.nextInt();
    int res;
  
    if (n == 0) res = 0; else    
    if (n <= k) res = 4; else
    {
      res = 2 * n / k;
      if (2 * n % k > 0) res++;
      res *= 2;
    }        
    System.out.println(res);
    con.close();
  }
}