华为9.02笔试第一题

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

struct mydata
{
	int i;
	int cnt;
	mydata(int i, int cnt):i(i),cnt(cnt){}
};

bool operator<(const mydata& a, const mydata& b)
{
	if (a.cnt < b.cnt)
	{
		return true;
	}
	else if (a.cnt == b.cnt && a.i > b.i)
		return true;
	return false;
}

int main()
{
	int n;
	cin >> n;
	int cnt, color;
	vector<mydata> v1;
	vector<mydata> v2;

	for (int i = 1; i <= n; ++i)
	{
		cin >> cnt >> color;
		if (color == 1)
			v1.emplace_back(mydata{ i, cnt });
		else
			v2.emplace_back(mydata{ i, cnt });

	}
	sort(v1.begin(), v1.end());
	sort(v2.begin(), v2.end());
	int ans1 = 0;
	int i = 3;
	vector<int> v3;
	if (v1.size() >= 3)
	{
		while (i--)
		{
			v3.push_back((*(v1.end() - i - 1)).i);
			ans1 += (*(v1.end() - i - 1)).cnt;
		}
	}
	int ans2 = 0;
	vector<int> v4;
	if (v2.size() >= 3)
	{
		i = 3;
		while (i--)
		{
			v4.push_back((*(v2.end() - i - 1)).i);
			ans2 += (*(v2.end() - i - 1)).cnt;
		}
	}
	

	if (ans1 >= ans2&&v1.size()>=3)
	{
		sort(v3.begin(), v3.end());
		for (auto i : v3)
			cout << i<<" ";
		cout << "\n" << 1 << "\n";
		cout << ans1;
	}
	else if (ans1 <= ans2 && v2.size() >= 3)
	{
		sort(v4.begin(), v4.end());
		for (auto i : v4)
			cout << i<<" ";
		cout << "\n" << 2 << "\n";
		cout << ans2;
	}
	else
	{
		cout << "null";
	}
	return 0;
}
#笔试题目##华为#
全部评论
第二题AC
点赞 回复 分享
发布于 2020-09-02 22:30
这个只过了80%,大佬们看看代码有哪些问题,目前发现没有对ans判断是否为0
点赞 回复 分享
发布于 2020-09-02 21:36

相关推荐

不愿透露姓名的神秘牛友
07-01 12:22
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务