题目背景
P5094 [USACO04OPEN] MooFest G 加强版
题目描述
约翰的 n 头奶牛每年都会参加“哞哞大会”。
哞哞大会是奶牛界的盛事。集会上的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等。
它们参加活动时会聚在一起,第 i 头奶牛的坐标为 xi,没有两头奶牛的坐标是相同的。
奶牛们的叫声很大,第 i 头和第 j 头奶牛交流,会发出 max{vi,vj}×∣xi−xj∣ 的音量,其中 vi 和 vj 分别是第 i 头和第 j 头奶牛的听力。
假设每对奶牛之间同时都在说话,请计算所有奶牛产生的音量之和是多少。
输入格式
第一行:单个整数 n,1≤n≤2×104
第二行到第 n+1 行:第 i+1 行有两个整数 vi 和 xi(1≤vi,xi≤2×104)。
输出格式
单个整数:表示所有奶牛产生的音量之和
输入输出样例
输入 #1复制
4 3 1 2 5 2 6 4 3
输出 #1复制
57
代码实现:
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
vector<int> a;
vector<int> b;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int v,x;
cin>>v>>x;
a.push_back(v);
b.push_back(x);
}
long long sum=0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
int m=max(a[i],a[j]);
sum+=m*abs(b[i]-b[j]);
}
}
cout<<sum;
return 0;
}