201403-1相反数

201403-1相反数

#include<bits/stdc++.h>
using namespace std;
//本代码考虑了可能出现重复的数的情况 
int main(void)
{
    int n,x;
    map<int,int> mp;//映射: 键:数字 值:出现的次数 
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        if(mp.find(x)==mp.end())//mp.find()==mp.end()说明没有找到 
        {
            mp[x]=1;
        }
        else
        {
            mp[x]++;
        }
    }
    map<int,int>::iterator it;//mp类型的迭代器 
    int ans=0;
    for(it=mp.begin();it!=mp.end();it++)//遍历映射 
    {
        if(it->first>0&&mp.find(-(it->first))!=mp.end())//it->first访问键	it-second访问值 
        {
            ans+=mp[it->first]*mp[-(it->first)];//正数个数*对应的负数个数 
        }
    }
    cout<<ans<<endl;
    return 0;
}
上一篇:CSP-201403-2-窗口


下一篇:201403-2