#include <stdio.h>

int main()
{
    // a = 다리 위에 있는 학생 수
    // k = 대기중인 학생 수
    // w = 최대 인원
    // b = 다리 구간의 수
    // n = 다리를 건너야 하는 학급 수
    // k = 각 학급별 인원
    int a[104] = { 0 }, w, b, n, k[104];

    scanf("%d %d", &w, &b);
    scanf("%d", &n);

    //1반부터 N반까지 학생 수 입력
    for (int i = 1; i <= n; i++) scanf("%d", &k[i]);

    // 시간 저장
    int t = 0;

    // 첫번째로 대기중인 학급
    int j = 1;

    // 종료 조건 체크
    while (1)
    {

        // 다리 위에 있는 학생 수
        int asum = 0;

        // 현재 다리에 학생이 얼마나 있는지 합계
        for (int i = 1; i <= b; i++)
            asum += a[i];

        // 다리 위에도 학생이 없고, 대기 중인 학급도 없다면 나가기
        if (asum == 0 && j > n)
            break;

        //1분이 흐름.
        t++;

        //다리의 첫 번째 위치에 있는 학생들은 이동이 끝남.
        asum -= a[1];

        // 한 칸씩 왼쪽으로 이동한다.(다리 한 칸 이동)
        for (int i = 2; i <= b; i++) a[i - 1] = a[i];
        // a[b]는 비어있을 것이므로 0으로 채워준다.
        a[b] = 0;

        //만약 대기하는 학급이 있으면 다리 위에 학생이 올라갈 수 있는지 확인
        if (j <= n)
        {
            // x에 다리에 올라올지 정하는 학급을 넣어놓는다.
            int x = k[j];

            // 다리 위에 올라갈 수 있는 경우
            if ((asum + x) <= w) {
                a[b] = x;

                //다음 학급으로 전환.
                j++;
            }
        }
    }
    //시간 출력.
    printf("%d", t);
}

'SFPC > 2022' 카테고리의 다른 글

2022 SFPC pA1  (0) 2023.02.22
2022 SFPC E1  (0) 2023.02.21
2022 SFPC E0  (0) 2023.02.21
2022 SFPC D0  (0) 2023.02.18
2022 SFPC C0  (0) 2023.02.17
2022 SFPC B0  (0) 2023.02.17

+ Recent posts