大概思路就是把这两个数组排序。在扫描一次,判断大小,累加ans。
#include<bits/stdc++.h> using namespace std; int x,y,z; int n[100010],m[100010]; long long s; int main(){ cin>>z>>x>>y; for(int i=1;i<=z;i++) cin>>n[i]>>m[i]; sort(n+1,n+1+z); sort(m+1,m+1+z); for(int i=1;i<=z;i++){ if(n[i]<m[i]) s+=(m[i]-n[i])*x; else s+=(n[i]-m[i])*y; } cout<<s; return 0; }