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;
}
posted @ 2026-03-19 21:42  peter_shen  阅读(3)  评论(0)    收藏  举报