Submission #12670

#TimeUsernameProblemLanguageResultExecution timeMemory
12670kipa00격자 보존하기 (GA9_preserve)C++98
56 / 100
32 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); int last = -1; for (i=0; i<k; ++i) { int now; scanf("%d", &now); if (last < 0) { last = now; start = now - 1; } else { put.push(now - last - 1); last = now; } } end = n - last; 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...