1253: 最小价值和
map使用迭代器访问的话就是 it->first,it->second
然后map注意键不重复
#include <bits/stdc++.h>
using namespace std;
int n;
const int N=1e5+10;
long long num[N][2];
struct node{
long long diff;
int id;
bool operator<(const node&a)const{
return diff<a.diff;
}
};
int main(){
while(scanf("%d",&n)!=EOF){
vector<node> vec;
for(int i=1;i<=n;i++){
scanf("%lld %lld",&num[i][0],&num[i][1]);
vec.push_back({num[i][0]-num[i][1],i});
}
long long sum=0;
int i=n;
sort(vec.begin(),vec.end());
for(auto it= vec.begin();it!=vec.end();it++){
sum=sum+ (i-1)*num[(it->id)][0]+ (n-i)*num[(it->id)][1];
i--;
}
printf("%lld\n",sum);
}
return 0;
}

浙公网安备 33010602011771号