본문 바로가기
알고리즘 문제풀이/백준

[백준 16112] 5차 전직

by m2162003 2020. 12. 31.

www.acmicpc.net/problem/16112

 

16112번: 5차 전직

메이플스토리 뉴비 키파가 드디어 레벨 200을 달성하고 5차 전직이라는 시스템을 이용해 캐릭터를 더욱 강력하게 만들려고 합니다. 5차 전직을 하려면 먼저 퀘스트를 통해 아케인스톤이라는 아

www.acmicpc.net

그리디 문제

예시 두 세가지 정도 확인하면 식을 세울 수 있다. 주의해야할 건 롱롱으로 인한 오버 플로우 처리..

 

 

식 세우기

전체 n개의 퀘스트와 k개의 돌맹이를 활성화시킨다.

A1 A2 A3 .... AN

 

S1 S2 .. SK

S1이 활성화된 이후 쌓이는 경험치는 A2 + A3 + ... + An

S2에 쌓이는 경험치는 A3 + A4 + .. An

Sk에 쌓이는 경험치는 Ak+1 .. + An

일 것이다.

정리하면 (Ak+1 +  ... + An) * k개 이고 그 전엔 Aj * (j-1) 개가 될 것이다.

 

최대 경험치가 쌓여야 하므로 k개가 무조건 보장되는 An쪽에 큰 수가 있어야 한다. 따라서 오름차순 정렬한다.

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

using namespace std;
int n, k;
long long arr[300001];
int main(void)
{
  scanf("%d%d", &n, &k);

  for (int i = 0; i < n; i++)
  {
    scanf("%lld", &arr[i]);
  }

  sort(arr, arr + n);
  long long sum = 0;
  for (int i = 1; i <= k; i++)
  {
    long long tmp = 1LL * arr[i] * i;
    sum += tmp;
  }

  for (int i = k + 1; i < n; i++)
  {
    long long tmp = 1LL * arr[i] * k;
    sum += tmp;
  }

  printf("%lld\n", sum);
  return 0;
}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 20310] 타노스  (0) 2020.12.31
[백준 17392] 우울한 방학  (0) 2020.12.31
[백준 11501] 주식  (0) 2020.12.31
[백준 1753] 최단경로  (0) 2020.12.30
[백준 2448] 별 찍기 - 11  (0) 2020.12.29

댓글