Moo Volume

来源:互联网 发布:java疯狂讲义第几版好 编辑:程序博客网 时间:2024/05/17 08:24

H - Moo Volume
Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
Submit Status

Description

Farmer John has received a noise complaint from his neighbor, Farmer Bob, stating that his cows are making too much noise. 

FJ's N cows (1 <= N <= 10,000) all graze at various locations on a long one-dimensional pasture. The cows are very chatty animals. Every pair of cows simultaneously carries on a conversation (so every cow is simultaneously MOOing at all of the N-1 other cows). When cow i MOOs at cow j, the volume of this MOO must be equal to the distance between i and j, in order for j to be able to hear the MOO at all. Please help FJ compute the total volume of sound being generated by all N*(N-1) simultaneous MOOing sessions.

Input

* Line 1: N 

* Lines 2..N+1: The location of each cow (in the range 0..1,000,000,000).

Output

There are five cows at locations 1, 5, 3, 2, and 4.

Sample Input

515324

Sample Output

40

Hint

INPUT DETAILS: 

There are five cows at locations 1, 5, 3, 2, and 4. 

OUTPUT DETAILS: 

Cow at 1 contributes 1+2+3+4=10, cow at 5 contributes 4+3+2+1=10, cow at 3 contributes 2+1+1+2=6, cow at 2 contributes 1+1+2+3=7, and cow at 4 contributes 3+2+1+1=7. The total volume is (10+10+6+7+7) = 40.
这个题的大意:有N头牛,每只牛都会与另外N-1只牛说话,说话的音量与两只牛之间的距离相等,求这N只牛说话的总音量。
不知道为啥,所有的变量要用long long,否则会WA。
#include <iostream>#include <stdio.h>#include <algorithm>using namespace std;long long cow[10010];int main(){    long long n,i;    scanf("%lld",&n);    for(i=0;i<n;i++)        scanf("%lld",&cow[i]);    sort(cow,cow+n);    long long sum=0;    for(i=1;i<n;i++)        sum+=(cow[i]-cow[i-1])*i*(n-i)*2;        //这是个推导公式,至于如何推导的我也布吉岛为啥    printf("%lld\n",sum);    return 0;}



0 0
原创粉丝点击