안녕하세요. 오늘은 이장님을 초대할 거예요.

문제

https://www.acmicpc.net/problem/9237

아이디어

최대한 오래걸리는것부터 심어야합니다.
그러므로 주어진 값들을 역순으로 정렬하고 인덱스(1부터)를 더한 다음에 최댓값+1을 출력해주면 됩니다. 오늘이 1일차 이므로 1을 더해주면 됩니다.

소스코드

#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll N, i, arr[101010] = { 0 }, ans = 0;
    cin >> N;
    for (i = 1; i <= N; i++) cin >> arr[i];

    sort(arr + 1, arr + N + 1, greater<>());
    for (i = 1; i <= N; i++) ans = max(ans, arr[i] + i);
    cout << ans + 1;
}

감사합니다.

0개의 댓글