new file: 24.cpp

This commit is contained in:
user
2026-08-16 10:09:16 +08:00
parent c07d70e776
commit 1db2629aa5
+72
View File
@@ -0,0 +1,72 @@
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int T, n, m;
long long k;
int p[500005], t[500005], lg2[500005];
template <typename TT>
inline TT read()
{
TT x = 0;
bool w = true;
register char ch = getchar();
while (ch < '0' || ch > '9')
{
if (ch == '-')
w = false;
ch = getchar();
}
while (ch >= '0' && ch <= '9')
x = (x << 3) + (x << 1) + (ch ^ '0'), ch = getchar();
return w ? x : -x;
}
template <typename TT>
inline void put(TT x)
{
if (x < 0)
putchar('-'), x = -x;
if (x > 9)
put(x / 10);
putchar(x % 10 + '0');
}
inline bool pd(const int &L, const int &R)
{
if (R > n)
return false;
for (register int i = L; i <= R; i++)
t[i] = p[i];
long long sum = 0;
sort(t + L, t + R + 1);
int l = L, r = R, cnt = 0;
while (l < r && sum <= k && ++cnt <= m)
sum += (long long)(t[r] - t[l]) * (t[r] - t[l]), l++, r--;
return sum <= k;
}
int main()
{
for (register int i = 2; i <= 5e5; i++)
lg2[i] = lg2[i >> 1] + 1;
T = read<int>();
while (T--)
{
n = read<int>(), m = read<int>(), k = read<long long>();
for (register int i = 1; i <= n; i++)
p[i] = read<int>();
int ans = 0;
int l = 1, r = l, flag = 1;
while (r <= n)
{
if (!flag)
ans++, l = r + 1, r = l;
if (pd(l, r + (1 << flag) - 1))
r = r + (1 << flag) - 1, flag++;
else
flag--;
}
put(ans);
}
return 0;
}