Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33854 23级逯一鸣 【S】T2 C++ 编译错误 0 0 MS 0 KB 1901 2024-10-24 13:57:33

Tests(0/0):


#include <algorithm> #include <cstdio> #include <ranges> #include <vector> using namespace std; using i128 = __int128_t; void write(i128 val) { if (val == 0) { puts("0"); return; } vector<int> digits; while (val > 0) { digits.emplace_back(val % 10); val /= 10; } for (int x : digits | views::reverse) printf("%d", x); putchar('\n'); } constexpr i128 INF = ((i128)0x3f3f3f3f3f3f3f3f << 64) | 0x3f3f3f3f3f3f3f3f; i128 income(const vector<int>& cnts, int n, int b, int k, int x) { i128 res = (i128)(1 - k) * x; // fprintf(stderr, "[%d] (%lld) ", k, res); for (int cnt : cnts) { if (cnt <= k) { res += b * cnt * (i128)(cnt - 1) / 2; // fprintf(stderr, "%lld ", b * cnt * (i128)(cnt - 1) / 2); continue; } i128 div_k = cnt / k, mod_k = cnt % k; if (mod_k == 0) { res += b * k * div_k * (cnt - div_k) / 2; // fprintf(stderr, "%lld ", b * k * div_k * (cnt - div_k) / 2); } else { res += b * ((k * div_k * (k - 1) * div_k + mod_k * (mod_k - 1)) / 2 + mod_k * (k - 1) * div_k); // fprintf(stderr, "%lld ", b * (((k - 1) * div_k * (k - 2) * div_k + mod_k * (mod_k - 1)) / 2 + mod_k * (k - 1) * div_k)); } } // fputc('\n', stderr); return res; } int solve_test() { int n, b, x; scanf("%d %d %d", &n, &b, &x); int mx_cnt = 0; vector<int> cnts(n); for (int& cnt : cnts) { scanf("%d", &cnt); mx_cnt = max(mx_cnt, cnt); } i128 mx = -INF; for (int i = 1; i <= mx_cnt; ++i) mx = max(mx, income(cnts, n, b, i, x)); write(mx); return 0; } int main() { int t = 1; while (t-- > 0) solve_test(); return 0; }


测评信息: