開啟章節選單
12015 Google is Feeling Lucky
題目敘述
Google 為最有名的網路搜尋引擎之一,它也提供許多網路服務與產品。在它的搜尋首面上有一個有趣的按鈕「好手氣」吸引了我們的目光。這個功能讓使用者跳過搜尋結果頁面而直接進入排名最高的頁面。真是省時又好用!
問題是,當按下「好手氣」時到底會出現哪一個頁面?Google 有個不錯的方式來處理。為了簡化問題,假設 Google 為每個頁面設定了一個整數的相關度。相關度最高的頁面就會中選。如果平分,所有的相關度最高的頁面都有可能中選。
給你 10 個頁面及相關度,請選出所有可能成為「好手氣」的頁面。
輸入說明
輸入有多筆測資。輸入的第一行有測資的筆數 T。 每筆測資中有 10 行以描述頁面及相關度。每行含有一個不含空白的字串代表頁面的網址及一個整數 Vi 代表該頁面的相關度。網址的長度介於 1 到 100 之間(含)。
輸出說明
對於每筆測資,輸出可能中選的頁面網址。網址出現的順序與輸入相同。
解題思路
對每組測資做自訂排序,如果相關度相同不交換順序,最後輸出最大的相關數的網址。
程式碼
#include <bits/stdc++.h> using namespace std; bool Less(pair<string, int> &a, pair<string, int> &b) { if (a.second == b.second) return 0; return a.second > b.second; } int main() { int n, a; string s; cin >> n; for (int j = 0; j < n; j++) { cout << "Case #" << j + 1 << ':' << endl; map<string, int> mp; vector<pair<string, int>> vr; for (int i = 0; i < 10; i++) { cin >> s >> a; vr.push_back({s, a}); } sort(vr.begin(), vr.end(), Less); int big = vr[0].second; for (auto &d : vr) if (d.second == big) cout << d.first << endl; } return 0; }