查看: 2009|回復: 1
打印 上一主題 下一主題

[UVa] 10141 - Request for Proposal

[複製鏈接]
  • TA的每日心情
    鬱悶
    2015-5-15 22:38
  • 簽到天數: 33 天

    [LV.5]常住居民I

    75

    主題

    302

    帖子

    766

    積分

    版主

    TFcis - 105 附設監工官

    Rank: 7Rank: 7Rank: 7

    積分
    766

    台南一中資訊社程式設計達人 - 2014

    跳轉到指定樓層
    樓主
    發表於 2014-5-18 21:31:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    本帖最後由 jd3 於 2014-5-18 22:46 編輯

    英文原題:http://uva.onlinejudge.org/external/101/10141.html
    中文翻譯:http://luckycat.kshs.kh.edu.tw/homework/q10141.htm
    ==========================================================
    注意事項:所有名稱,包含廠商及服務,都可能有空格,請小心讀取
    使用getline, gets, ......時,注意前一行的換行字元在scanf後不會消失,可以先用getchar讀掉
    ==========================================================


    解法:因為廠商提供的服務有多少個已經直接講明了,且沒有不需要的服務
    所以直接開struct (class)多載 operator 用直接比較更新答案或開陣列下去sort找頭或尾

    ======
    CODE :  
    ======
    /*
        UVA 10141
        AC 9ms
    */
    #include<iostream>
    #include<cstdio>
    #include<algorithm>

    using namespace std;



    struct Prop
    {
        char name[82];
        double cost;
        int mark;
        Prop(){mark = -1;};
    };
    inline bool operator < (const Prop &p1, const Prop &p2)
    {
        if(p1.mark != p2.mark)
            return p1.mark < p2.mark;
        return p1.cost > p2.cost;
    }


    int n,p;
    int r;
    string order[1024];
    Prop prop;
    string item[1024];


    int main()
    {
        for(int t = 1 ; ; t++)
        {
            Prop ans;
            
            scanf("%d%d", &n, &p);
            if(n==0 && p==0)
                return 0;
                
            getchar();
            
            for(int i = 0 ; i < n ; i++)
                getline(cin, order[0]);
            
            
            for(int i = 0 ; i < p ; i++)
            {
                gets(prop.name);
                scanf("%lf%d", &prop.cost, &prop.mark);
                
                getchar();
                
                for(int j = 0 ; j < prop.mark ; j++)
                    getline(cin, item[j]);
                
                if(ans < prop)
                    ans = prop;
            }
            
            
            
            if(t > 1)
                putchar('\n');
            printf("RFP #%d\n",t);
            printf("%s\n",ans.name);
        }
        return 0;
    }


    (( 參考網路sort版:http://hoyusun.blogspot.tw/2012/ ... t-for-proposal.html

    點評

    TAB發文時是8個空白,你只要再編輯&儲存一次就會變4個空白XD  發表於 2014-5-18 21:40

    評分

    參與人數 1金幣 +3 收起 理由
    Sylveon + 3

    查看全部評分

    <這是個人簽名欄位>
    回復

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表