问题 C: 饱了吗

题目描述
LZY经过大学三年的刻苦学习,在大三毕业前夕,终于入职外卖行业巨头——饱了吗?作为饱了吗的新晋JAVA工程师,项目经理分配了一个艰巨的任务给他,希望他完成一个餐厅过滤器.现在给LZY一个餐馆信息列表,每个餐馆的信息包括id,rating,veganFriendly,price,distance,分别代表餐馆id,餐馆评分,餐馆是否对素食者友好,平均价格以及距离。

过滤规则如下:
其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false,如果为 true 就意味着你应该只留下包括 veganFriendly 为 true 的餐馆,为 false 则意味着可以包括任何餐馆。此外,我们还有最大价格 maxPrice 和最大距离 maxDistance 两个过滤器,它们分别考虑餐厅的价格因素和距离因素的最大值。

过滤后输出符合要求的餐馆信息,按照 rating 从高到低排序。如果 rating 相同,那么按 id 从高到低排序。简单起见, veganFriendly 为 true 时取值为 1,为 false 时,取值为 0 。
输入
测试数据由多组测试样例组成。
每组测试数据第一行输入4个整数,餐馆的数量 n ( 1 <= n <= 10000 ), 素食友好标记 a ( a == 0 or a == 1 ),最大价格 b ( 0 <= b <= 10000 ), 最远距离c ( 0 <= c <= 10000 )
接下来n行分别输入5个整数 餐馆id q( 1 <= q <= 10000 ),餐馆评分 w ( 1 <= w <= 10000 ) ,餐馆是否对素食者友好 ( e == 0 or e == 1 ),餐馆平均价格 r ( 1 <= r <= 10000 )以及餐馆距离(1 <= g <= 10000 )

输出
输出经过筛选后的餐馆清单,每行输出一条餐馆信息。
样例输入 Copy
5 0 50 10
1 4 1 40 10
2 8 0 50 5
3 8 1 30 4
4 10 0 10 3
5 1 1 15 1
样例输出 Copy
4 10 0 10 3
3 8 1 30 4
2 8 0 50 5
1 4 1 40 10
5 1 1 15 1

因为没有加!EOF错了13次!!!!!!!!!
很简单的结构体快排

#include<bits/stdc++.h>
using namespace std;
struct in{
int id,w,h,r,l;
};
in q[10001];
bool cmd(in sr1,in sr2){
if(sr1.wsr2.w){
return sr1.id>sr2.id;
}
return sr1.w>sr2.w;
}
int main(){
int n,t,b,c,i;
while(~scanf("%d%d%d%d",&n,&t,&b,&c)){
for(i=0;i<n;i++){
scanf("%d%d%d%d%d",&q[i].id,&q[i].w,&q[i].h,&q[i].r,&q[i].l);
}
sort(q,q+n,cmd);
for(i=0;i<n;i++){
if(t
1){
if(q[i].h==1&&q[i].l<=c&&q[i].r<=b)
printf("%d %d %d %d %d\n",q[i].id,q[i].w,q[i].h,q[i].r,q[i].l);
}
else{
if(q[i].l<=c&&q[i].r<=b)
printf("%d %d %d %d %d\n",q[i].id,q[i].w,q[i].h,q[i].r,q[i].l);
}
}
}
return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值