문제출처 : https://www.acmicpc.net/problem/16678
code
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int i, N, arr[100001] = { 0, }, index = 1;
long long result = 0;
cin >> N;
for (i = 0; i < N; i++)
cin >> arr[i];
sort(arr, arr + N);
for (i = 0; i < N; i++)
{
if (arr[i] >= index)
{
result += arr[i] - index;
index++;
}
}
cout << result;
return 0;
}
defile 프로젝트를 한번만 한다고했으니까, 프로젝트가 끊기지않고 계속 유지되려면 1번조건이 계속 반복되어야 한다. 그러므로 한번 돌때마다 0이하로 떨어져야하는데, 즉
1 2 3 4 5 6 7 .... 이렇게 만들어야 한다는 뜻이다.
이렇게 만들기전 최소의 해커를 고용하려면 오름차순으로 정렬을 해야한다.