AOJ 0227 - Thanksgiving
貪欲法みたいな.高い順にグループをつくり,最も低い分を引いてあげましょう.
#include <iostream> #include <algorithm> #include <vector> int main(){ int n, m; while(std::cin >> n >> m, n){ int total = 0; std::vector<int> pvec; for(int i=0;i<n;i++){ int p; std::cin >> p; pvec.push_back(p); total += p; } std::sort(pvec.begin(), pvec.end(), std::greater<int>()); int i = 1, discount = 0; for(;i*m<=n;i++){ discount += pvec[i*m-1]; } std::cout << total - discount << std::endl; } }