飽了嗎(結構體快排)

題目描述
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

解題思路:
典型的結構題快排,要注意素食友好標記爲1時,將所有的距離小於等於最大距離的店鋪且價格小於等於最大價格的店鋪加入結構體,素食友好標記爲0時,將所有的對素食者友好的且距離小於等於最大距離的店鋪且價格小於等於最大價格的店鋪加入結構體。

#include<bits/stdc++.h>
using namespace std;
struct Node{
    int a,b,c,d,e;
}node[10005];
bool cmp(Node o,Node p){
    if(o.b!=p.b) return o.b>p.b;
    return o.a>p.a;
}
int main(){
    int n,m,k,l,i,x,y,z,t,r,f;
    while(~scanf("%d%d%d%d",&n,&m,&k,&l)){
        f=0;
        for(i=0;i<n;i++){
            scanf("%d%d%d%d%d",&x,&y,&z,&t,&r);
            if(m==0 && t<=k && r<=l){
                node[f].a=x;
                node[f].b=y;
                node[f].c=z;
                node[f].d=t;
                node[f].e=r;
                f++;
            }
            else if(m==1){
                if(z==1 && t<=k && r<=l){
                    node[f].a=x;
                    node[f].b=y;
                    node[f].c=z;
                    node[f].d=t;
                    node[f].e=r;
                    f++;
                }
            }
        }
        sort(node,node+f,cmp);
        for(i=0;i<f;i++){
            printf("%d %d %d %d %d\n",node[i].a,node[i].b,node[i].c,node[i].d,node[i].e);
        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章