Submission #12204

#TimeUsernameProblemLanguageResultExecution timeMemory
12204qja0950격자 보존하기 (GA9_preserve)C++98
100 / 100
32 ms1876 KiB
//
//  main.cpp
//  1. preserve
//
//  Created by KJBS2 on 2014. 12. 24..
//  Copyright (c) 2014년 KJBS2. All rights reserved.
//

#include <stdio.h>
#include <algorithm>
#include <stdlib.h>

using namespace std;

#define MAX_K 101101

int N, K, D;
int Sort[MAX_K];
int Sum[MAX_K];
int first, second;

bool cmp(int a, int b) {
    return a > b;
}
void INPUT() {
    scanf("%d%d%d", &N, &K, &D);
    int a; scanf("%d", &a); first = a-1;
    for(int i=1; i<K; i++) {
        int b; scanf("%d", &b);
        Sort[i] = b-a-1;
        a=b;
    }
    second = N - a;
    sort(Sort+1, Sort+K, cmp);
}
int main() {
    INPUT();
    for(int i=1; i<K; i++) {
        Sum[i] = Sum[i-1] + Sort[i];
    }
    
    int nowD = D/2;
    if(nowD >= K) nowD = K-1;

    int ans = Sum[nowD];
    
    nowD = (D-1)/2; if(nowD >= K) nowD = K-1;
    ans = max(ans, Sum[nowD] + first);
    nowD = (D-1)/2; if(nowD >= K) nowD = K-1;
    ans = max(ans, Sum[nowD] + second);
    nowD = (D-2)/2; if(nowD >= K) nowD = K-1;
    ans = max(ans, Sum[nowD] + first + second);
    
    printf("%d", ans);
    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...