#include#include using namespace std; int main() { int n, k; cin >> n >> k; int p[n], ret = 0; for (int i = 0; i < n; ++i) cin >> p[i]; sort(p, p + n); //给数组排序,便于计算最小预算 int map[n]{0}; //若有幻钾则变为1 for (int l = 0; l < n; ++l) { int r = l + 1; while (r != n) { if ((p[l] + p[r]) % k == 0) { map[l] = 1; map[r] = 1; } r++; } } int flag = 1; for (int i = 0; i < n; ++i) { if (map[i] == 1 && flag) //计算第一个存在幻钾的地区 { ret += p[i] * p[i]; flag = 0; } if (map[i] == 0) { ret += p[i] * p[i]; } } cout << ret << endl; return 0; }


![[ACM训练题]算法入门 - 记录表法解题 [ACM训练题]算法入门 - 记录表法解题](http://www.mshxw.com/aiimages/31/311811.png)
