flag 60牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,

为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。 

每个输入包含一个测试用例。
每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=100000)和小伙伴的数量M(M<=100000)。
接下来的N行每行包含两个正整数,分别表示该项工作的难度Di(Di<=1000000000)和报酬Pi(Pi<=1000000000)。
接下来的一行包含M个正整数,分别表示M个小伙伴的能力值Ai(Ai<=1000000000)。
保证不存在两项工作的报酬相同。

# include <stdio.h>

# include <malloc.h>
typedef struct node
{
long di;
long pi;
}Node,*Pnode;
void sort(Pnode work,int size);
 void find(Pnode work,long* frien,int M,int N);
int main()
{
long N,M;
scanf("%ld%ld",&N,&M);
Pnode work=(Pnode)malloc(sizeof(Node)*N);
for(int i=0;i<N;i++)
scanf("%ld%ld",&work[i].di,&work[i].pi);
long* frien=(long*)malloc(sizeof(long)*M);
for(int j=0;j<M;j++)
scanf("%ld",&frien[j]);
sort(work,N);
find(work,frien,M,N);
for(int i=0;i<M;i++)
printf("%ld ",frien[i]);
return 0;
 } 
 void sort(Pnode work,int size)
 {
  Node t;
  bool change=true;
  for(int i=0;i<size && change;i++)
  {
  change=false;
  for(int j=size-1;j>i;j--)
  if(work[j].di<work[i].di)
  {
  t=work[j];
  work[j]=work[i];
  work[i]=t;
  change=true;
}
}
 }
 void find(Pnode work,long* frien,int M,int N)
 {
  long val=-1;
  for(int i=0;i<M;i++)
  {
  for(int j=0;j<N;j++)
  if(frien[i]>=work[j].di )
  {
  if(work[j].pi>val)
  val=work[j].pi;
}
frien[i]=val;
//printf("val=%ld ",val);
val=-1;
}
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值