#include <stdio.h>

int main()
{
    // n = 
    int n, k[100004];

    //mn = 전체 구간중 배터리의 최솟값
    // a = 현재 배터리량
    int a = 0, mn = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) scanf("%d", &k[i]);

    for (int i = 1; i < n; i++)
    {
        // 고도가 낮아지는 경우
        if (k[i - 1] > k[i]) a += (k[i - 1] - k[i]) / 2;

        // 고도가 높아지는 경우
        else a += (k[i - 1] - k[i]) * 2;

        // 현재 배터리량이 0보다 작고 mn보다 작을 경우 정답 갱신
        if (a < 0 && a < mn) mn = a;
    }
    // -를 넣어 양수로 바꿔준다.
    printf("%d", -mn);
}

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

2022 SFPC pB1  (0) 2023.02.22
2022 SFPC pA0  (0) 2023.02.22
2022 SFPC pA1  (0) 2023.02.22
2022 SFPC E0  (0) 2023.02.21
2022 SFPC D1  (0) 2023.02.19
2022 SFPC D0  (0) 2023.02.18

#include <stdio.h>

int main()
{
	printf("42");
}

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

2022 SFPC pA0  (0) 2023.02.22
2022 SFPC pA1  (0) 2023.02.22
2022 SFPC E1  (0) 2023.02.21
2022 SFPC D1  (0) 2023.02.19
2022 SFPC D0  (0) 2023.02.18
2022 SFPC C0  (0) 2023.02.17
#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

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

2022 SFPC E1  (0) 2023.02.21
2022 SFPC E0  (0) 2023.02.21
2022 SFPC D1  (0) 2023.02.19
2022 SFPC C0  (0) 2023.02.17
2022 SFPC B0  (0) 2023.02.17
2022 SFPC A0  (0) 2023.02.17
#include <stdio.h>

// M = 달 별 마지막 날을 저장한 배열
// W = 요일들을 저장한 배열
int M[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 };
char W[7][4] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };

// 입력: 윤년을 확인할 년도 y
// 출력: 윤년이면 1, 아니면 0
int is_yun_year(int y)
{
	return (((y % 4) == 0) && ((y % 100 != 0)) || ((y % 400) == 0));
}

int main()
{
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);

	int num = 0;
	// a * b * c를 한 값에서 1까지 빼주며 최소공배수를 구해준다.
	for (int i = a * b * c; i >= 1; i--)
	{
		if (i % a == 0 && i % b == 0 && i % c == 0) num = i;
	}

	// year = 정답 년도, month = 정답 월, day = 정답일, week = 정답 요일
	// 초기값은 2100년 1월 1일 금요일
	int year = 2100, month = 1, day = 1, week = 5;
	while (1)
	{

		// 만약 is_yun_year 함수에서 결과가 1이 나오면 윤년이란 뜻인데
		// M[2]가 2월 달 끝부분이므로 29로 바꾼다.
		if (is_yun_year(year))
			M[2] = 29;
		else
			M[2] = 28; // 윤년이 아니면 28로 둔다.
		if (num >= M[month]) // 만약 현재 달의 마지막 날을 넘은 상황
		{
			num -= M[month]; // num에 달 수를 뺸다.
			week += M[month]; // 요일에 지난 달 수를 더해준다.
			week %= 7; // week를 7로 나눈 값의 나머지를 저장하여 요일값으로 업데이트한다.
			month++; // 달을 하나 올린다.
			if (month == 13) // 만약 month가 13이면 년도를 올려줘야 하므로
			{
				year++; // 년도를 올려주고
				month = 1; // 달을 1로 바꿔준다.
			}
		}
		else break; //num가 M[month]를 넘지 않으면 이 반복문을 나간다.
	}
	// week와 num을 더한 값에 7로 나눈 값의 나머지를 저장시키며 요일을 구해준다.
	week = (week + num) % 7;

	// 년도는 4칸에 맞춰서 출력하고
	// 월과 일은 2칸에 맞춰 출력한다.
	// 요일은 요일들이 있는 배열 W에서 골라 출력해준다.
	printf("%04d-%02d-%02d %s", year, month, day + num, W[week]);
}

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

2021 SFPC pB1 ver.2  (0) 2023.02.15
2021 SFPC E0  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10

+ Recent posts