城墙
Description
FJ居住的城堡有N個(gè)城墻(1<=N<=25,000),編號(hào)為1到N,每個(gè)城墻的高度為M_i(1<=M_i<=100,000),他想把城墻的高度按照某種順序變成B_1,B_2,….B_N(1<=B_i<=100,000),由于工作量比較大,FJ雇傭了一些牛來(lái)幫忙提高或降低墻的高度,當(dāng)然要付工資,提高一單位高度需要花費(fèi)X(1<=X<=100),降低一單位高度需要花費(fèi)Y(1<=Y<=100)。
FJ想用最少的錢(qián)來(lái)完成這項(xiàng)任務(wù),請(qǐng)你幫助計(jì)算,保證答案在longint范圍內(nèi)。
Input
第1行:3個(gè)空格隔開(kāi)的整數(shù)N,X和Y
第2到N+1行:第i+1行包含兩個(gè)空格隔開(kāi)的整數(shù)表示M_i和B_i
Output
輸出一個(gè)整數(shù)表示最少花費(fèi)。
Sample Input
3 6 5
3 1
1 2
1 2
Sample Output
11
Data Constraint
Hint
【樣例說(shuō)明】
FJ把原來(lái)的高度3,1,1依次變?yōu)?,2,1。
【數(shù)據(jù)說(shuō)明】
40%的數(shù)據(jù)N<=9
60%的數(shù)據(jù)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; }轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9499952.html
總結(jié)