開啟章節選單
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; }