ACM 精挑細選

OpenSoucre發表於2014-04-02

精 挑 細 選

時間限制:3000 ms  |  記憶體限制:65535 KB
難度:1
 
描述
小王是公司的倉庫管理員,一天,他接到了這樣一個任務:從倉庫中找出一根鋼管。這聽起來不算什麼,但是這根鋼管的要求可真是讓他犯難了,要求如下:
1
 這根鋼管一定要是倉庫中最長的;
2
 這根鋼管一定要是最長的鋼管中最細的;
3
 這根鋼管一定要是符合前兩條的鋼管中編碼最大的(每根鋼管都有一個互不相同的編碼,越大表示生產日期越近)。
相關的資料到是有,可是,手工從幾百份鋼管材料中選出符合要求的那根…… 
要不,還是請你編寫個程式來幫他解決這個問題吧。
 
輸入
第一行是一個整數N(N<=10)表示測試資料的組數)
每組測試資料的第一行 有一個整數m(m<=1000),表示倉庫中所有鋼管的數量,
之後m行,每行三個整數,分別表示一根鋼管的長度(以毫米為單位)、直徑(以毫米為單位)和編碼(一個9位整數)。
輸出
對應每組測試資料的輸出只有一個9位整數,表示選出的那根鋼管的編碼,
每個輸出佔一行
樣例輸入
2
2
2000 30 123456789
2000 20 987654321
4
3000 50 872198442
3000 45 752498124
2000 60 765128742
3000 45 652278122
樣例輸出
987654321
752498124
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

struct Steel{
    int length;
    int diameter;
    long id;
    bool operator<(const Steel& one) const{
        if(length != one.length) return length<one.length;
        else if(diameter != one.diameter) return diameter > one.diameter;
        else return id < one.id;
    }
};

int main(){
    int n;
    cin >> n;
    for (int icase = 0 ; icase < n; ++ icase) {
        int m;
        cin >> m;
        vector<Steel> steelVector(m);
        for (int i = 0; i < m;  ++ i) {
            cin >> steelVector[i].length >>steelVector[i].diameter >> steelVector[i].id;
        }
        sort(steelVector.begin(),steelVector.end());
        cout<<steelVector.rbegin()->id<<endl;
    }
}

 

相關文章