#include #include #include using namespace std; #define D double #define UI unsigned int UI k, n, f = 0; ifstream in("runners.in"); ofstream out("runners.out"); int main() { if (in.is_open() && out.is_open()) { in >> n >> k; int* xk{ new int[k] {} }; int* yk{ new int[k] {} }; int* xn{ new int[n] {} }; int* yn{ new int[n] {} }; D* s{ new D[k] {} }; D* formula{ new D[k] {} }; for (UI i = 0; i < k; ++i) { in >> s[i]; } for (UI i = 0; i < n; ++i) { in >> xn[i] >> yn[i]; if (i < k) { out << xn[i] << " " << yn[i] << "\n"; xk[i] = xn[i]; yk[i] = yn[i]; } } in.close(); for (UI i = k; i < n; ++i) { D min = 1e10; UI h = 0; for (UI j = 0; j < k; ++j) { if (f == 0) { out << j + 1 << "\n"; } formula[j] = s[j] * sqrt(pow((xk[j] - xn[i]), 2) + pow((yk[j] - yn[i]), 2)); if (min > formula[j]) { min = formula[j]; h = j; } } out << h + 1 << "\n"; xk[h] = xn[i]; yk[h] = yn[i]; f++; } delete[] xk; delete[] yk; delete[] xn; delete[] yn; delete[] s; delete[] formula; out.close(); } return 0; }