#易错点1:可能会有价格相同,数量不同的情况,需要+
while (m--) { cin >> p >> a; mp[p] += a; }
#易错点2:【价格*数量】会爆int,需要强转
for (auto& pr : mp) { sum += pr.second;//并入数量 money += (LL)pr.first * pr.second; if (sum > n) { money -= (LL)(sum - n) * pr.first;//减掉多花的钱 break; } }