#SY0304. 取宝石

取宝石

取宝石

2025 全国青少年信息素养大赛 复赛 C++ · 初中组 第 10 题

题目描述

探险队进入了一个神秘地宫,里面有 n 堆宝石,每堆宝石个数为正整数。旁边有一面石碑,上面刻着取宝石的规则:探险者需要选定一堆宝石,从这堆宝石开始每隔 k-1 堆宝石拿一堆宝石(即每隔 k-1 堆取一堆,相邻两次所取宝石堆相隔 k)。

已知每一堆宝石的数量,请问探险队最多能拿走多少个宝石?

输入格式

第一行:两个正整数 n、k,用一个空格隔开。

第二行:n 个正整数 a₁, a₂, …, aₙ,表示每堆宝石的个数。

输出格式

一个整数,表示最多能拿走的宝石个数。

样例输入

7 3
4 6 2 1 10 1 3

样例输出

16

样例说明

  • 从第 1 堆开始:拿第 1、4、7 堆 → 4+1+3 = 8
  • 从第 2 堆开始:拿第 2、5 堆 → 6+10 = 16
  • 从第 3 堆开始:拿第 3、6 堆 → 2+1 = 3
  • 从第 4 堆开始:拿第 4、7 堆 → 1+3 = 4
  • 从第 5 堆开始:拿第 5 堆 → 10
  • 从第 6 堆开始:拿第 6 堆 → 1
  • 从第 7 堆开始:拿第 7 堆 → 3

最大值为 16。

数据范围

  • 对于 60% 的数据:1 ≤ n ≤ 10³,1 ≤ k ≤ n。
  • 对于 100% 的数据:1 ≤ n ≤ 5×10⁵,1 ≤ k ≤ n,每堆宝石个数为不超过 10⁵ 的正整数。