제출 #1157639

#제출 시각아이디문제언어결과실행 시간메모리
1157639byunjaewoo원 고르기 (APIO18_circle_selection)C++20
0 / 100
1088 ms58692 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int N=300010; int n, x[N], y[N], r[N], ans[N]; map<pair<int, int>, vector<int>> vec; set<int> st; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; for(int i=1; i<=n; i++) { cin>>x[i]>>y[i]>>r[i], st.insert(i); vec[{x[i]/r[i], y[i]/r[i]}].push_back(i); } while(!st.empty()) { int k=(*st.begin()); for(int dx=-1; dx<=1; dx++) for(int dy=-1; dy<=1; dy++) if(vec.find({x[k]/r[k]+dx, y[k]/r[k]+dy})!=vec.end()) { vector<int> tmp, tmp2; swap(tmp, vec[{x[k]/r[k]+dx, y[k]/r[k]+dy}]); for(int i:tmp) { if((x[i]-x[k])*(x[i]-x[k])+(y[i]-y[k])*(y[i]-y[k])<=4*r[1]*r[1]) ans[i]=k, st.erase(i); else tmp2.push_back(i); } swap(tmp2, vec[{x[k]/r[k]+dx, y[k]/r[k]+dy}]); } } for(int i=1; i<=n; i++) cout<<ans[i]<<" "; return 0; }
#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...