Submission #12772

#TimeUsernameProblemLanguageResultExecution timeMemory
12772Qwaz격자 보존하기 (GA9_preserve)C++98
100 / 100
32 ms2372 KiB
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

const int MAX = 100020;

int n, d, k, data[MAX];

void input(){
	scanf("%d%d%d", &n, &k, &d);

	for(int i = 0; i < k; i++)
		scanf("%d", &data[i]);
}

vector < int > gap;

int res;

void solve(){
	int front = data[0]-1, rear = n-data[k-1];

	for(int i = 1; i < k; i++)
		gap.push_back(data[i]-data[i-1]-1);

	sort(gap.begin(), gap.end());

	if(d >= 1){
		res = max(res, front);
		res = max(res, rear);
	}

	if(d >= 2)
		res = max(res, front+rear);

	int index = k-2, current = 0;
	while(index >= 0 && d >= 2){
		d -= 2;
		current += gap[index--];

		res = max(res, current);

		if(d >= 1){
			res = max(res, current+front);
			res = max(res, current+rear);
		}

		if(d >= 2)
			res = max(res, current+front+rear);
	}

	printf("%d\n", res);
}

int main(){
	input();

	solve();

	return 0;
}
#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...