sicily 1063.Who's the boss

来源:互联网 发布:mac 修改系统版本号 编辑:程序博客网 时间:2024/05/20 14:18
#include <stdio.h>#include <vector>#include <algorithm>using namespace std;struct node{    int id;    int salary;    int height ;};bool comp(node const & a,node const & b){    return a.salary < b.salary ;}int main(){    int n,m,p;    scanf("%d",&n);    while(n--)    {        vector<node> val;        val.clear();        scanf("%d %d",&m,&p);        for(int i=0;i<m;i++)        {            node temp;            scanf("%d %d %d",&temp.id,&temp.salary,&temp.height);            val.push_back(temp);        }        sort(val.begin(),val.end(),comp);        while(p--)        {            int id = -1,goalSalary = -1,goalHeight = -1,boss = 0,sNum=0;            scanf("%d",&id);            //find boss            for(int i=0;i<val.size();i++)            {                if(val[i].id == id)                {                    goalSalary = val[i].salary;                    goalHeight = val[i].height;                }                else if(goalSalary > 0 && goalHeight > 0 &&                     val[i].salary > goalSalary && val[i].height >= goalHeight)                {                    boss = val[i].id;                    break;                }            }            printf("%d ",boss);            //find subordinate            for(int i=0;i<val.size();i++)            {                if(val[i].id == id)                {                    break;                }                else                {                    if(val[i].salary < goalSalary && val[i].height <=  goalHeight)//若前面所有i的身高都比goal身高矮,则即使i不是goal的下属,也是i到goal中j的下属,而j肯定是goal的下属,所以i也是goal的下属                    {                        sNum++;                    }                    //i的身高大于goalheight,即i之前的员工都是i的下属,而i与goal之间没有上下属关系。                    else                    {                        sNum =0;                    }                }            }            printf("%d\n",sNum);        }    }    return 0;}                                 


原创粉丝点击