# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
571596 | Cross_Ratio | Circle selection (APIO18_circle_selection) | C++14 | 694 ms | 56736 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> P;
int X[300005];
int Y[300005];
int R[300005];
int ans[300005];
bool used[300005];
signed main() {
cin.sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int N;
cin >> N;
int i, j;
for(i=0;i<N;i++) cin >> X[i] >> Y[i] >> R[i];
priority_queue<P> PQ;
set<P> S1, S2;
for(i=0;i<N;i++) {
S1.insert(P(X[i]+R[i],i));
S2.insert(P(X[i]-R[i],i));
PQ.push(P(R[i],-i));
ans[i] = -1;
}
while(true) {
int id = -1;
while(!PQ.empty()) {
P k = PQ.top();
PQ.pop();
if(!used[-k.second]) {
id = -k.second;
break;
}
}
if(id==-1) break;
auto it1 = S1.lower_bound(P(X[id]-R[id],0));
while(it1 != S1.end()&&it1->second <= X[id] + R[id]) {
ans[it1->second] = (ans[it1->second]==-1?id : ans[it1->second]);
used[it1->second] = true;
auto it2 = it1;
it1++;
S1.erase(it2);
}
it1 = S2.lower_bound(P(X[id]-R[id],0));
while(it1 != S2.end()&&it1->second <= X[id] + R[id]) {
ans[it1->second] = (ans[it1->second]==-1?id : ans[it1->second]);
used[it1->second] = true;
auto it2 = it1;
it1++;
S2.erase(it2);
}
}
for(i=0;i<N;i++) cout << ans[i]+1 << ' ';
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |