糖果传递
2020-02-03 12:55:34
本文总阅读量次
分析过程
1 | 1->2->3->4->...->n->1 构成一个环 |
AcWing
104.货仓选址 ### 代码 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using namespace std;
typedef long long LL;
const int N = 1000010;
int n;
LL a[N], c[N];
LL sum, ans;
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
sum += a[i];
}
LL avg = sum / n; // 因为题目保证有解,因此平均数必为整数。
c[1] = 0;
for (int i = 2; i <= n; i++)
c[i] = c[i - 1] + a[i] - avg;
sort(c + 1, c + 1 + n);
int mid = c[(1 + n) / 2];
for (int i = 1; i <= n; i++)
ans += (LL)abs(mid - c[i]);
cout << ans << endl;
return 0;
}