Moo Volume

来源:互联网 发布:zigbee协议栈编程 编辑:程序博客网 时间:2024/06/05 05:11

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.

代码:

#include<iostream>#include<string>#include<cstdio>#include<algorithm>#include<cmath>#include<iomanip>#include<queue>#include<cstring>#include<map>using namespace std;typedef long long ll;#define pi acos(-1.0)#define inf 0x3f3f3f#define M 50005int n;int a[10002];int main(){    int i,j;    ll ans=0;    scanf("%d",&n);    for(i=1;i<=n;i++)    {        scanf("%d",&a[i]);    }    sort(a+1,a+1+n);    for(i=1;i<=n;i++)    {        for(j=1;j<=i;j++)            ans+=a[i]-a[j];        for(j=i+1;j<=n;j++)            ans+=a[j]-a[i];    }    printf("%I64d",ans);    return 0;}


原创粉丝点击