제출 #12245

#제출 시각아이디문제언어결과실행 시간메모리
12245pro0331격자 보존하기 (GA9_preserve)C++98
100 / 100
28 ms1476 KiB
#include <stdio.h>
#include <algorithm>
#include <functional>

int n, k, d, blank[100001];

int main()
{
	int i, p;
	int last = 0;
	scanf("%d %d %d", &n, &k, &d);
	for (i = 0; i < k; i++) {
		scanf("%d", &p);
		blank[i] = p - last - 1;
		last = p;
	}
	blank[k] = n - last;

	int first = blank[0];
	last = blank[k];
	sort(blank, blank+k+1, std::greater<int>());

	int result = 0;
	for (i = 0; d > 1 && i <= k; i++) {
		result += blank[i];
		if (first == blank[i]) {
			first = 0;
			d--;
		} else if (last == blank[i]) {
			last = 0;
			d--;
		} else {
			d -= 2;
		}
	}
	if (d == 1)
		result += std::max(first, last);
	else if (first + last > blank[i-1])
		result = result - blank[i-1] + first + last;
	printf("%d\n", result);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...