求助只有20分
查看原帖
求助只有20分
1601543
lele3720楼主2025/7/27 16:59
#include <iostream>
#include <algorithm>
using namespace std;
#define ull unsigned long long
const int N = 5e6 + 10;
const ull mod = 9223372036854775808;

int n;
ull ans = 0;
struct node {
	ull x;
	ull y;
	int idx;
}query[N];
ull fx[N];

bool cmp1(node a, node b) {
	return a.x < b.x;
}
bool cmp2(node a, node b) {
	return a.idx < b.idx;
}

int main() {
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> query[i].x >> query[i].y;
		query[i].idx = i;
	}
	sort(query + 1, query + n + 1, cmp1);
	ull temp = query[1].x;
	query[1].x = 1;
	for (int i = 2; i <= n; i++) {
		if (query[i].x == temp) {
			query[i].x = query[i - 1].x;
		}
		else {
			temp = query[i].x;
			query[i].x = query[i - 1].x + 1;
		}
	}
	sort(query + 1, query + n + 1, cmp2);

	for (int i = 1; i <= n; i++) {
		int idx = query[i].x;
		ull y = query[i].y;
		ans = (ans + (fx[idx] * i) % mod) % mod;
		fx[idx] = y;
	}
	ans %= mod;
	printf("%lld\n", ans);
}
2025/7/27 16:59
加载中...