Submission #1356064

#TimeUsernameProblemLanguageResultExecution timeMemory
1356064javkhlantogs원 고르기 (APIO18_circle_selection)C++20
12 / 100
1368 ms114184 KiB
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
	ll n,i,j,k,q;
	cin>>n;
	vector<vector<ll>> c(n,vector<ll>(3));
	vector<ll> ans(n+1);
	set<vector<ll>> st1,st2;
	for(i=0 ; i<n ; i++){
		cin>>c[i][0]>>c[i][1]>>c[i][2];
		st1.insert({-c[i][2],i,c[i][0],c[i][1]});
		st2.insert({c[i][0]+c[i][2],i});
		st2.insert({c[i][0]-c[i][2],i});
	}
	vector<ll> a;
	while(st1.size()){
		vector<ll> x=*(st1.begin());
		ll l=x[2]+x[0],r=x[2]-x[0];
		auto itr=st2.lower_bound({l,0});
		a.clear();
		while(itr!=st2.end()){
			if((*itr)[0]>r) break;
			ans[(*itr)[1]+1]=x[1]+1;
			ll ind=(*itr)[1];
			a.push_back(ind);
			itr++;
		}
		for(auto v:a){
			st1.erase({-c[v][2],v,c[v][0],c[v][1]});
			st2.erase({c[v][0]+c[v][2],v});
			st2.erase({c[v][0]-c[v][2],v});
		}
	}
	for(i=1 ; i<=n ; i++) cout<<ans[i]<<" ";
	return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...