L2-017 人以群分 (25 分)
分析:
我好蠢 还一个一个的加, 直接排序 如果是偶数直接平分 如果是奇数 前一半是内向的 后一半是外向 的。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n;
scanf("%d",&n);
vector<ll> people;
ll out=0;
ll in=0;
ll numout=0,numin=0; //人数
for(int i=0;i<n;i++)
{
ll p;
cin>>p;
people.push_back(p);//输入每个人的活跃度
}
sort(people.begin(),people.end());
bool flag=true;//true的时候向后 false向前
for(int b=0,e=people.size()-1;e>=b;)
{
if(flag)
{
out+=people[e];
numout++;
flag=false;
e--;
}//奇数时中间那个人要归成外向的 才可以把差距拉大
else
{
in+=people[b];
numin++;
flag=true;
b++;
}
}
printf("Outgoing #: %lld\nIntroverted #: %lld\nDiff = %lld",numout,numin,abs(in-out));
}
L2-017 人以群分 (25 分)
分析:
利用map的自动按照字典序排序的规则来输出。迭代的时候。。不知道我的哪儿有问题 第五个测试点过不了 以后就按照dalao那样迭代了。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int n,m,counts=0;
set<string> guanzhu;
cin>>n;
for(int i=0;i<n;i++)
{
string s;
cin>>s;
guanzhu.insert(s);//把关注的人加入集合
}
cin>>m;
map<string,int> dianzhan;
for(int i=0;i<m;i++)
{
string name;
int ci;
cin>>name>>ci;
dianzhan[name]=ci;
counts+=ci;
}
counts/=m;//平均点赞数
bool flag=true;
/* for(it=dianzhan.begin();it!=dianzhan.end();it++)
{
if(it->second>counts&&find(guanzhu.begin(),guanzhu.end(),it->first)==guanzhu.end())//如果大于
{
cout<<it->first<<endl;
flag=false;
}
}
*/
for (auto it : dianzhan) {
if (it.second > counts&& guanzhu.find(it.first) == guanzhu.end()) {
cout << it.first << endl;
flag = false;
}
}
if(flag)
cout<<"Bing Mei You";
}