#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章...