#include <iostream> #include <unordered_map> using namespace std; int main() { int n; cin >> n; unordered_map<unsigned long long, unsigned long long> ss; // 记录 i 对应的 gg[x] 的值 unordered_map<unsigned long long, unsigned long long> gg; // 记录 x 对应的 y 值 for (unsigned long long i = 1; i < n + 1; i++) { unsigned long long x, y; cin >> x >> y; // 如果 gg 中没有 x,先插入 0(或者直接用 gg[x]) if (gg.find(x) == gg.end()) { gg[x] = 0; // 默认值 } // 记录当前的 gg[x] 到 ss[i] ss[i] = gg[x]; // 更新 gg[x] 为最新的 y gg[x] = y; } unsigned long long ret = 0; for (unsigned long long i = 1; i < n + 1; i++) { ret += i*ss[i]; // 累加 ss[i] } cout << ret; return 0; }
所有数必须是unsigned long long