拼多多应该不缺人吧。第一题代码

//小熊,通过百分之40,这是修改后的代码,不确定对不对。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

static bool compare(vector<int> a, vector<int> b) {
	if (a.empty() || b.empty())
		return true;
	return a[0] >= b[0];
}

int gettheclosestvalue(vector<int> &value, int target) {
	if (value.empty()) return 0;
	int res = 0;
	int index = 0;
	for (int i = 0; i < value.size(); i++) {
		if (value[i] <= target) {
			if (res < value[i]) {
				res = value[i];
				index = i;
			}
		}
	}
	if (index != 0) value[index] = 0;
	else {
		if (target >= value[0] && res == value[0])
			value[index] = 0;
	}
	return res;
}

int getindex(vector<vector<int>> nums, int target) {
	for (int i = 0; i < nums.size(); i++) {
		if (nums[i][0] == target)
			return i;
	}
	return -1;
}

void f(vector<int> &value, vector<vector<int>> &bear) {
	vector<vector<int>> beartemp = bear;
	sort(bear.begin(), bear.end(), compare);
	for (int i = 0; i < bear.size(); i++) {
		int temp = gettheclosestvalue(value, bear[i][1]);
		while (temp) {
			bear[i][1] -= temp;
			temp = gettheclosestvalue(value, bear[i][1]);
		}
	}

	for (int i = 0; i < bear.size(); i++) {
		printf("%d\n", bear[getindex(bear, beartemp[i][0])][1]);
	}
}

int main() {
	int n, m, i = 0;
	cin >> n;//小熊的数量
	cin >> m;//糖的数量
	vector<int> value(m);//糖的饥饿值
	vector<vector<int> > bear(n, vector<int>(2));//熊的战斗力和饥饿值

	while (i < m)
		scanf("%d", &value[i++]);
	i = 0;
	while (i < n) {
		scanf("%d", &bear[i][0]);
		scanf("%d", &bear[i++][1]);
	}
	f(value, bear);
	return 0;
}

全部评论
刚开始过40后来发现是输出顺序没有按照熊的顺序输出,改下就通过了
点赞 回复 分享
发布于 2017-09-02 17:26
各位大哥,你们第二道是Linux tree,第三道是秒杀服务器,第四道是子序列吗? 然后过了多少?
点赞 回复 分享
发布于 2017-09-02 17:26
过40?小伙子思考问题不周全啊
点赞 回复 分享
发布于 2017-09-02 17:18

相关推荐

05-12 22:16
已编辑
北京邮电大学 研发工程师
牛客302360988号:0offer+1 滴滴都不给我面 佬没投鹅吗,鹅应该很喜欢北邮吧
投递美团等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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