제출 #252458

#제출 시각아이디문제언어결과실행 시간메모리
252458amoo_safar원 고르기 (APIO18_circle_selection)C++14
7 / 100
166 ms768 KiB
// Null #include <bits/stdc++.h> #define pb push_back #define F first #define S second #define all(x) x.begin(), x.end() #define debug(x) cerr << #x << " : " << x << '\n' using namespace std; typedef long long ll; typedef long double ld; typedef string str; typedef pair<ll, ll> pll; const ll Mod = 1000000007LL; const int N = 5e3 + 10; const ll Inf = 2242545357980376863LL; const ll Log = 30; ll x[N], y[N], r[N]; ll ans[N]; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n; cin >> n; for(int i = 1; i <= n; i++){ cin >> x[i] >> y[i] >> r[i]; } while(true){ int idx = -1; int mx = -1; for(int i = n; i >= 1; i--){ if(ans[i]) continue; if(r[i] >= mx){ idx = i; mx = r[i]; } } if(idx == -1) break; for(int i = 1; i <= n; i++){ if(ans[i]) continue; ll dis = (x[i] - x[idx]) * (x[i] - x[idx]) + (y[i] - y[idx]) * (y[i] - y[idx]); ll rq = r[i] * r[i] + r[idx] * r[idx] + 2 * r[i] * r[idx]; if(rq >= dis) ans[i] = idx; } } for(int i = 1; i <= n; i++) cout << ans[i] << ' '; cout << '\n'; return 0; } /* 11 9 9 2 13 2 1 11 8 2 3 3 2 3 12 1 12 14 1 9 8 5 2 8 2 5 2 1 14 4 2 14 14 1 */
#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...