Submission #12669

#TimeUsernameProblemLanguageResultExecution timeMemory
12669kipa00격자 보존하기 (GA9_preserve)C++98
56 / 100
28 ms2372 KiB
#include <cstdio> #include <queue> using namespace std; priority_queue<int, vector<int>, less<int> > put; int horse[100000]; int main() { int start, end, n, k, d; int i; scanf("%d %d %d", &n, &k, &d); for (i=0; i<k; ++i) { scanf("%d", &horse[i]); } start = horse[0] - 1; end = n - horse[k - 1]; for (i=1; i<k; ++i) { put.push(horse[i] - horse[i - 1] - 1); } if (d == 1) printf("%d\n", (start > end) ? start : end); else if (d == 2) printf("%d\n", (start + end > put.top()) ? (start + end) : put.top()); else { int nd = d - 2; int now = 0, max = -1; for (i=0; i<nd/2; ++i) { now += put.top(); put.pop(); } nd %= 2; nd += 2; if (nd == 3) { max = put.top() + start; if (max < put.top() + end) { max = put.top() + end; } if (max < start + end) { max = start + end; } } else if (nd == 2) { max = start + end; if (max < put.top()) { max = put.top(); } } printf("%d\n", now + max); } 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...