注意坑点:看到题目,点进赛时公告板,有一行字:不保证数据类型一定正确。说明什么?不开long long见祖宗!
然后就是模拟,因为 \(n\) 有 \(10^7\),所以得使用 \(\Theta(n)\) 的复杂度,那么开一个 \(bool\) 数组,记录歌曲是否听过(虽然 \(bool\) 数组开 \(10^7\) 有点危险,但不会 \(MLE\))。
最后,上代码,习惯了,所以快读快些都放上了(说实话最后一个输出好像也没快多少)。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline ll read() {
int x = 0; bool flag = 1; char c = getchar();
while(c < '0' || c > '9') { if(c == '-') flag = 0; c = getchar(); }
while(c >= '0' && c <= '9') { x = (x << 1) + (x << 3) + c - '0'; c = getchar(); }
return (flag ? x : ~(x - 1));
}
inline void write(ll x) {
if (x < 0) putchar('-'), x = -x;
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
int n;
ll ans;
bool islisten[10000005];
int main() {
n = read();
for(int i = 1; i <= n; i++) {
int x = read();
ll t = read();
if(t <= 1 || islisten[x]) continue;
else ans += t, islisten[x] = true;
}
write(ans);
return 0;
}