记录编号 596380 评测结果 AAAAAAAATT
题目名称 品质控制 最终得分 80
用户昵称 GravatardarkMoon 是否通过 未通过
代码语言 C++ 运行时间 3.768 s
提交时间 2024-10-25 15:56:35 内存使用 5.84 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
auto mread = [](){int x;scanf("%lld", &x);return x;};
int t = mread();
signed main(){
    while(t --){
        int n = mread(), m = mread(), k = mread();
        int a[n + 5], b[n + 5];
        for(int i = 1; i <= n; i ++){
            cin >> a[i];
        }
        auto solve = [&](int l, int r){
            for(int i = l; i <= r; i ++){
                b[i] = a[i];
            }
            sort(b + l, b + 1 + r);
            int ans = 0;
            for(int i = l, j = r; i < j && i - l + 1 <= m; i ++, j --){
                ans += (b[j] - b[i]) * (b[j] - b[i]);
            }
            return ans;
        };
        int now = 1, ans = 0;
        while(now <= n){
            int sum = 1;
            int p = 1;
            while(p){
                if(now + sum + p - 1 <= n && solve(now, now + sum + p - 1) <= k){
                    sum += p;
                    p <<= 1;
                }
                else{
                    p >>= 1;
                }
            }
            now += sum;
            ans ++;
        }
        printf("%lld\n", ans);
    }
    return 0;
}