# k184. pA. 房屋推薦 (house) ###### tags: `toi`、`sort` ##### 題目連結:https://zerojudge.tw/ShowProblem?problemid=k184 ##### 第一次寫時犯了以下錯誤,以致 TLE: * 在 sorted() 函式中計算距離 * sorted() 函式中用了傳值而非傳址 ```C++ #include <bits/stdc++.h> using namespace std; vector<pair<int,int>> MRT; bool sorted(vector<long long int> &a,vector<long long int> &b){ // 傳址,時間差很多 if (a[4]!=b[4]) return a[4]<b[4]; else{ if (a[3]!=b[3]) return a[3]<b[3]; else { return a[0]<b[0]; } } } int main() { long long int dis=9e18; ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long int n,m; cin>>n>>m; vector<vector<long long int>> code_x_y_rent(n,vector<long long int>(5)); for(int i=0;i<n;i++){ code_x_y_rent[i][0]=i; cin>>code_x_y_rent[i][1]>>code_x_y_rent[i][2]>>code_x_y_rent[i][3]; } for(int i=0;i<m;i++){ pair<int,int> p; cin>>p.first>>p.second; MRT.push_back(p); } for(int i=0;i<n;i++){ dis=9e18; for (auto j:MRT){ long long int dis1=(code_x_y_rent[i][1]-j.first)*(code_x_y_rent[i][1]-j.first)+(code_x_y_rent[i][2]-j.second)*(code_x_y_rent[i][2]-j.second); dis=min(dis,dis1); } code_x_y_rent[i][4]=dis; } sort(code_x_y_rent.begin(),code_x_y_rent.end(),sorted); for (int i=0;i<n;i++){ cout<<code_x_y_rent[i][0]+1<<endl; } return 0; } ```