내림차순정렬 + 쉬운 DP
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void input_tree(vector<int>& tree)
{
int N;
int i, temp;
cin >> N;
for (i = 0; i < N; i++)
{
cin >> temp;
tree.push_back(temp);
}
sort(tree.begin(), tree.end(), greater<int>());
return;
}
void find_answer(vector<int> tree)
{
int i, grown = 0;
int temp;
for (i = 1; i <= tree.size(); i++)
{
temp = tree[i - 1] + i;
if (temp > grown)
{
grown = temp;
}
}
cout << grown + 1<< "\n";
return;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
vector<int> tree;
input_tree(tree);
find_answer(tree);
return 0;
}