城墙
Description
FJ居住的城堡有N個城墻(1<=N<=25,000),編號為1到N,每個城墻的高度為M_i(1<=M_i<=100,000),他想把城墻的高度按照某種順序變成B_1,B_2,….B_N(1<=B_i<=100,000),由于工作量比較大,FJ雇傭了一些牛來幫忙提高或降低墻的高度,當然要付工資,提高一單位高度需要花費X(1<=X<=100),降低一單位高度需要花費Y(1<=Y<=100)。
FJ想用最少的錢來完成這項任務,請你幫助計算,保證答案在longint范圍內。
Input
第1行:3個空格隔開的整數N,X和Y
第2到N+1行:第i+1行包含兩個空格隔開的整數表示M_i和B_i
Output
輸出一個整數表示最少花費。
Sample Input
3 6 5
3 1
1 2
1 2
Sample Output
11
Data Constraint
Hint
【樣例說明】
FJ把原來的高度3,1,1依次變為2,2,1。
【數據說明】
40%的數據N<=9
60%的數據N<=18
.
.
.
.
.
.
程序:
#include<iostream> #include<cstdio> #include <algorithm> using namespace std; int main() {freopen("sandcas.in","r",stdin);freopen("sandcas.out","w",stdout);int n,x,y;int m[30000],b[30000];cin>>n>>x>>y;for (int i=1;i<=n;i++)cin>>m[i]>>b[i];sort(m+1,m+n+1);sort(b+1,b+n+1);long long ans=0;for (int i=1;i<=n;i++)if (m[i]>b[i]) ans+=(m[i]-b[i])*y; else ans+=(b[i]-m[i])*x;cout<<ans;fclose(stdin);fclose(stdout);return 0; }轉載于:https://www.cnblogs.com/YYC-0304/p/9499952.html
總結