#include <stdio.h>
int main()
{
//n,代表下一行输入n个数,N代表共有N个序号,注意从0开始
int n, N;
scanf("%d %d", &n ,&N);
int B[N] = {0};
int r;
int k;
int res = 0;
int i, j;
int sum = 0;
//计算比例系数
r = N/(n+1);
int g[N] = {0}; //存放g(X)
//注意A[0]固定为0,所以从A[1]开始存,到A[n]结束:
for(i=1; i<=n; i++)
{
scanf("%d", &j);
B[j]++; //标记出要变的位置,暂时用 B 记录
}
for(i=1; i<N; i++) //B[0] = 0;
{
B[i] = B[i] + B[i-1]; //求出真正的数组 B 即f(X)
// sum = sum + B[i]; //求和
// printf("%d ", B[i]);
}
// printf("\n");
for(i=1; i<N; i++) //g[0] = 0;
{
//计算g(x)
g[i] = i/r;
//printf("%d ",g[i]);
}
for(i=1; i<N; i++) //g[0] = 0;
{
if(g[i]>=B[i])
{
k = g[i]-B[i];
}
else k = B[i]-g[i];
res = res + k;
}
printf("%d",res);
return 0;
}
202112-2 序列查询新解
最新推荐文章于 2023-11-08 18:10:20 发布