Codeforces 131 B. Opposites Attract
問題
n人の人がいて、それぞれ値t[i]をもっている。
t[i]=-t[j]であるような二人i,j(ただしi≠jとする)はペアを作ることができる。
ペアは何通りできるか求めよ。
制約条件
n≦10^5
- 10≦t≦10
方針
nが大きいので、t[i]の値の出現頻度を数えて掛け算して求める。
intオーバーフローに注意。
ソースコード
int n; ll cnt[30]; void run() { cin>>n; rep(i,n){ int t; cin>>t; cnt[t+10]++; } ll ans=cnt[10]*(cnt[10]-1)/2; rep(i,10)ans+=cnt[i]*cnt[20-i]; cout<<ans<<endl; }