안녕하세요. 오늘은 이장님을 초대할 거예요.
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;
}
감사합니다.