---
# System prepended metadata

title: k184. pA. 房屋推薦 (house)
tags: [sort, toi]

---

# 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;
}
```