2862: 练55.4 沙堡

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:2 解决:2

题目描述

约翰用沙子建了一座城堡。正如所有城堡的城墙,这城墙也有许多枪眼,两个相邻枪眼中间那部分叫作“城齿”。城墙上一共有$N$ ($1 < N ≤ 25000$)个城齿,每一个都有一个高度$M_i$($1≤M_i≤10^5$)。
现在约翰想把城齿的高度调成某种顺序下的$B_i$($1≤Bi≤10^5$)。一个城齿每提高一个单位的高度,约翰需要$X$ ($1≤X ≤100$)元;每降低一个单位的高度,约翰需要$Y$ ($1≤Y≤100$)元,问约翰最少可用多少钱达到目的。

输入

第一行三个整数 $N$,$X$,$Y$。
接下来$N$行,每行两个整数$M_i$,$B_i$。

输出

一个整数,表示最少的花费。

样例输入 复制

3 6 5
3 1
1 2
1 2

样例输出 复制

11

提示

#include<bits/stdc++.h>
using namespace std;
long long n,x,y,a[25005],b[25005],sum;
int main(){
    cin>>n>>x>>y;
    for(int i=0;i<n;i++)cin>>a[i]>>b[i];
    sort(a,a+n);
    sort(b,b+n);
    for(int i =0;i<n;i++){
        if(a[i]>b[i])sum+=(a[i]-b[i])*y;
        if(a[i]<b[i])sum+=(b[i]-a[i])*x;
    }
    cout<<sum;
    return 0;
}