您的位置:首页 > 其它

CCF 相反数

2015-09-11 14:38 204 查看
自己写的实现,未采用用空间换时间的方案,采用了排序的方式,效率不高,仅供参考
#include<iostream>
#include<vector>
#include<map>
#include "math.h"
using namespace std;
int main()
{
int N;
cin>>N;
int i = 0;
map<int,vector<int> >  groups;
for(;i<N;i++)
{
int tempt;
cin>>tempt;
groups[abs(tempt)].push_back(tempt);
}

map<int,vector<int> >::iterator iter = groups.begin();
int count = 0;
for(;iter != groups.end();iter++)
{
//std::cout<<"first"<<iter->first<<"size"<<(iter->second).size()<<std::endl;
if((iter->second).size()<=1)
continue;
else
{
int len = (iter->second).size();
int value = iter->first;
int sum = value*len;
vector<int>::iterator iter1 = (iter->second).begin();
int sumreal = 0;
for(;iter1!= (iter->second).end();++iter1)
sumreal += *iter1;
//std::cout<<sum<<" df "<<sumreal<<std::endl;
count += (sum - sumreal)/(2*(iter->first));
}
}
std::cout<<count;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: