#include <iostream>
#include <stdlib.h>
#include <cmath>
using namespace std;
int compare(const void *pa, const void *pb)
{
int a = *((int *)pa);
int b = *((int *)pb);
return a - b;
}
int main()
{
int L, N;
cin >> L;
cin >> N;
int a[N];
int b[N];
int c[N];
for (int i = 0; i < N; i++)
{
cin >> a[i];
if (a[i] > L / 2)
{
b[i] = a[i] - L;
}
else
{
b[i] = a[i];
}
}
qsort(a, N, sizeof(int), compare);
qsort(b, N, sizeof(int), compare);
int maxDiff1 = a[N-1] - a[0];
int maxDiff2 = b[N-1] - b[0];
// cout << maxDiff1 << endl;
// cout << maxDiff2 << endl;
int maxDiff = 0;
if (maxDiff1 > maxDiff2)
{
maxDiff = maxDiff2;
for (int i = 0; i < N; i++)
{
c[i] = b[i];
}
}
else
{
maxDiff = maxDiff1;
for (int i = 0; i < N; i++)
{
c[i] = a[i];
}
}
int middleIndex = maxDiff / 2 + c[0];
// cout << middleIndex << endl;
int startIndex = 0;
if (N % 2 == 0)
{
startIndex = middleIndex - N / 2 + 1;
}
else
{
startIndex = middleIndex - N / 2;
}
int sum = 0;
for (int i = 0; i < N; i++)
{
sum += abs(c[i] - startIndex);
startIndex++;
}
cout << sum << endl;
return 0;
}
int testFun(int* a, int N, int middleIndex)
{
int startIndex = 0;
if (N % 2 == 0)
{
startIndex = middleIndex - N / 2 + 1;
}
else
{
startIndex = middleIndex - N / 2;
}
int sum = 0;
for (int i = 0; i < N; i++)
{
sum += abs(a[i] - startIndex);
startIndex++;
}
return sum;
}
test
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- //出自51博客:www.Amanda0928.51.com 第一章 一、选择题 1.B; (typedef ,t...
- 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...