1063. Who's the Boss

一开始是超时的,因为两个for循环全遍历了,后来把算法优化了不用全遍历就AC了。


#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

int noToSub[1000000];
int noToBoss[1000000];

struct em{
	int no; 
	int sal;
	int height;
	int sub; 
	int boss;
};

bool compare(const em& a, const em& b) {
	if(a.sal > b.sal) {
		return false;
	}
	return true;
}


int main() {
	int cases;
	scanf("%d", &cases);
	while(cases--) {
		int numOfEmp, numOfQue;
		scanf("%d %d", &numOfEmp, &numOfQue);
		em e[numOfEmp];
		for(int i = 0; i < numOfEmp; i++) {
			scanf("%d %d %d", &e[i].no, &e[i].sal, &e[i].height);
			e[i].sub = 0;
			e[i].boss = 0;
		}
		sort(e, e+numOfEmp, compare);
		/*for(int i = 0; i < numOfEmp; i++) {
			cout << e[i].no << ' ' << e[i].sal << ' ' << e[i].height << endl;
		}*/
		
		for(int i = 0; i < numOfEmp; i++) {
			for(int j = i + 1; j < numOfEmp; j++) {
				if(e[j].sal > e[i].sal && e[j].height >= e[i].height) {
					e[i].boss = e[j].no;
					e[j].sub += (e[i].sub + 1);
					break;
				}
			}
			noToSub[e[i].no] = e[i].sub;
			noToBoss[e[i].no] = e[i].boss;
		}
		
		for(int i = 0; i < numOfQue; i++) {
			int queNo;
			scanf("%d", &queNo);
			printf("%d %d\n", noToBoss[queNo], noToSub[queNo]);
		}
	}
	return 0;
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值