제출 #407542

#제출 시각아이디문제언어결과실행 시간메모리
407542tengiz05원 고르기 (APIO18_circle_selection)C++17
7 / 100
3073 ms14788 KiB
#include <bits/stdc++.h>
using i64 = long long;
inline i64 sq(int x) { return i64(x) * x; }
int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int n;
    std::cin >> n;
    std::vector<int> x(n), y(n), r(n);
    for (int i = 0; i < n; i++) {
        std::cin >> x[i] >> y[i] >> r[i];
    }
    std::vector<int> ans(n, -1);
    std::vector<int> ind(n);
    iota(ind.begin(), ind.end(), 0);
    sort(ind.begin(), ind.end(), [&](int i, int j) {
        if (r[i] == r[j]) return i < j;
        return r[i] > r[j];
    });
    for (auto i : ind) {
        if (~ans[i]) continue;
        for (int j = 0; j < n; j++) {
            if (~ans[j]) continue;
            i64 d1 = sq(x[i] - x[j]) + sq(y[i] - y[j]);
            i64 d2 = sq(r[i] + r[j]);
            if (d1 <= d2) {
                ans[j] = i;
            }
        }
    }
    for (auto x : ans) std::cout << x + 1 << ' ';
    std::cout << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...