sicily 1063. Who's the Boss
2015-11-16 14:32
169 查看
1063. Who's the Boss
Constraints
Time Limit: 1 secs, Memory Limit: 32 MBDescription
Several surveys indicate that the taller you are, the higher you can climb the corporate ladder. At TALL Enterprises Inc. this "de facto standard" has been properly formalized: your boss is always at least as tall as you are. Furthermore, you can safelyassume that your boss earns a bit more than you do. In fact, you can be absolutely sure that your immediate boss is the person who earns the least among all the employees that earn more than you and are at least as tall as you are. Furthermore, if you are
the immediate boss of someone, that person is your subordinate, and all his subordinates are your subordinates as well. If you are nobody's boss, then you have no subordinates. As simple as these rules are, many people working for TALL are unsure of to whom
they should be turning in their weekly progress report and how many subordinates they have. Write a program that will help in determining for any employee who the immediate boss of that employee is and how many subordinates they have. Quality Assurance at
TALL have devised a series of tests to ensure that your program is correct. These test are described below.
Input
On the first line of the input is a single positive integer n, telling the number of test scenarios to follow. Each scenario begins with a line containing two positive integers m and q, where m (at most 30000) is the number of employees and q (at most 200)is the number of queries. The following m lines each list an employee by three integers on the same line: employee ID number (six decimal digits, the first one of which is not zero), yearly salary in Euros and finally height in m (1 microm= 10^-6 meters -
accuracy is important at TALL). The chairperson is the employee that earns more than anyone else and is also the tallest person in the company. Then there are q lines listing queries. Each query is a single legal employee ID.
The salary is a positive integer which is at most 10 000 000. No two employees have the same ID, and no two employees have the same salary. The height of an employee is at least 1 000 000 microm and at most 2 500 000 microm.
Output
For each employee ID x in a query output a single line with two integers y k, separated by one space character, where y is the ID of x's boss, and k is the number of subordinates of x. If the query is the ID of the chairperson, then you should output 0 asthe ID of his or her boss (since the chairperson has no immediate boss except, possibly, God).
Sample Input
2 3 3 123456 14323 1700000 123458 41412 1900000 123457 15221 1800000 123456 123458 123457 4 4 200002 12234 1832001 200003 15002 1745201 200004 18745 1883410 200001 24834 1921313 200004 200002 200003 200001
Sample Output
123457 0 0 2 123458 1 200001 2 200004 0 200004 0 0 3
题目分析
上司收入和身高都要比下属高,确定每个人有几个下属和他的直属上司
先将每个人按收入由低到高排序,
从小到大遍历,若遇到一个人收入和身高都比他高,
则此人为直属上司,
自己的下属和司机都是此人的下属
#include <iostream>
#include <algorithm>
struct People {
int id, salary, height;
int boss, num;
};
bool compare(People a, People b) {
return a.salary < b.salary;
}
int main()
{
int test;
std::cin >> test;
while (test--) {
int amount, q;
std::cin >> amount >> q;
People emp[amount];
for (int c = 0; c < amount; ++c) {
std::cin >> emp[c].id >> emp[c].salary >> emp[c].height;
emp[c].boss = emp[c].num = 0;
}
std::sort(emp, emp + amount, compare);
for (int c = 0; c < amount - 1; ++c) {
for (int d = c + 1; d < amount; ++d) {
if (emp[d].height >= emp[c].height) {
emp[d].num++;
emp[d].num += emp[c].num;
emp[c].boss = emp[d].id;
break;
}
}
}
int query;
for (int c = 0; c < q; ++c) {
std::cin >> query;
for (int d = 0; d < amount; ++d) {
if (emp[d].id == query) {
std::cout << emp[d].boss << " " << emp[d].num << std::endl;
break;
}
}
}
}
return 0;
}
相关文章推荐
- CentOS6.5 配置VNC配置
- GD生成缩略图函数
- 开启ssh------解决远程登录失败的问题
- 【原】移动web页面给用户发送邮件的方法 (邮件含文本、图片、链接)
- C/C++求职宝典21个重点笔记(常考笔试面试点)
- jquery实现鼠标向下滚动右侧才出现返回顶部链接
- HTTP文件下载
- Jquery实现仿搜索引擎文本框自动补全插件
- 对字段值按字符拆分多行方法
- 初识cross apply & outer apply
- 为何Redis要比Memcached好用
- iOS判断机型
- leetcode: Employees Earning More Than Their Managers
- 常用javascript表单验证汇总
- 不要哭
- shell 脚本学习2
- 获取DATETIEM控件的界面日期
- 使用maven + eclipse 建置spark基礎環境
- 乒乓球拍板和皮子世界排名
- 女士手机一夜跑流量50GB原因是什么