답안 #240006

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
240006 2020-06-17T17:04:26 Z alishahali1382 원 고르기 (APIO18_circle_selection) C++14
72 / 100
3000 ms 49272 KB
#include <bits/stdc++.h>
#pragma GCC optimize ("O2,unroll-loops")
//#pragma GCC optimize("no-stack-protector,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<pii, int> piii;
typedef pair<ll, ll> pll;
#define debug(x) cerr<<#x<<'='<<(x)<<endl;
#define debugp(x) cerr<<#x<<"= {"<<(x.first)<<", "<<(x.second)<<"}"<<endl;
#define debug2(x, y) cerr<<"{"<<#x<<", "<<#y<<"} = {"<<(x)<<", "<<(y)<<"}"<<endl;
#define debugv(v) {cerr<<#v<<" : ";for (auto x:v) cerr<<x<<' ';cerr<<endl;}
#define all(x) x.begin(), x.end()
#define pb push_back
#define kill(x) return cout<<x<<'\n', 0;

const ld eps=1e-7;
const int inf=1000000010;
const ll INF=10000000000000010LL;
const int mod=1000000007;
const int MAXN=300010, LOG=20;

int n, m, k, u, v, x, y, t, a, b;
int X[MAXN], Y[MAXN], R[MAXN], P[MAXN], L=inf;
int ans[MAXN];
map<pii, vector<int>> mp;

bool check(int i, int j){
	ll dx=X[i]-X[j], dy=Y[i]-Y[j], r=R[i]+R[j];
	return dx*dx+dy*dy<=r*r;
}

void Build(){
	mp.clear();
	for (int i=1; i<=n; i++) if (!ans[i]) mp[{X[i]/L, Y[i]/L}].pb(i);
}

int main(){
	ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	cin>>n;
	for (int i=1; i<=n; i++) cin>>X[i]>>Y[i]>>R[i], P[i]=i;
	sort(P+1, P+n+1, [](int i, int j){
		return pii(R[i], -i)>pii(R[j], -j);	
	});
	L=R[P[1]];
	Build();
	for (int i=1; i<=n; i++){
		int id=P[i];
		if (ans[id]) continue ;
//		debug(id)
		if (R[id]<.75*L) L=R[id], Build();
		int x=X[id]/L, y=Y[id]/L;
		for (int xx=x-2; xx<=x+2; xx++)
			for (int yy=y-2; yy<=y+2; yy++) if (mp.count({xx, yy})){
				vector<int> vec=mp[{xx, yy}], v2;
				for (int j:vec){
					if (check(id, j)) ans[j]=id;
					else v2.pb(j);
				}
				mp[{xx, yy}]=v2;
			}
		
	}
	for (int i=1; i<=n; i++) cout<<ans[i]<<' ';
	
	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

*/
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 5 ms 512 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 4 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 5 ms 384 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 5 ms 384 KB Output is correct
18 Correct 5 ms 384 KB Output is correct
19 Correct 8 ms 512 KB Output is correct
20 Correct 8 ms 640 KB Output is correct
21 Correct 10 ms 512 KB Output is correct
22 Correct 21 ms 1024 KB Output is correct
23 Correct 22 ms 1024 KB Output is correct
24 Correct 20 ms 1024 KB Output is correct
25 Correct 20 ms 1024 KB Output is correct
26 Correct 20 ms 1024 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 191 ms 8764 KB Output is correct
2 Correct 203 ms 9064 KB Output is correct
3 Correct 193 ms 9484 KB Output is correct
4 Correct 190 ms 8732 KB Output is correct
5 Correct 262 ms 8824 KB Output is correct
6 Correct 1047 ms 24372 KB Output is correct
7 Correct 348 ms 15224 KB Output is correct
8 Correct 434 ms 19168 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 614 ms 13688 KB Output is correct
3 Correct 2553 ms 49240 KB Output is correct
4 Correct 2573 ms 49272 KB Output is correct
5 Correct 2720 ms 44280 KB Output is correct
6 Correct 873 ms 22240 KB Output is correct
7 Correct 359 ms 11896 KB Output is correct
8 Correct 48 ms 2808 KB Output is correct
9 Execution timed out 3080 ms 46328 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1697 ms 41152 KB Output is correct
2 Correct 1306 ms 41216 KB Output is correct
3 Correct 536 ms 17912 KB Output is correct
4 Correct 1327 ms 41176 KB Output is correct
5 Correct 1272 ms 41236 KB Output is correct
6 Correct 304 ms 11452 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 5 ms 512 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 4 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 5 ms 384 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 5 ms 384 KB Output is correct
18 Correct 5 ms 384 KB Output is correct
19 Correct 8 ms 512 KB Output is correct
20 Correct 8 ms 640 KB Output is correct
21 Correct 10 ms 512 KB Output is correct
22 Correct 21 ms 1024 KB Output is correct
23 Correct 22 ms 1024 KB Output is correct
24 Correct 20 ms 1024 KB Output is correct
25 Correct 20 ms 1024 KB Output is correct
26 Correct 20 ms 1024 KB Output is correct
27 Correct 12 ms 896 KB Output is correct
28 Correct 11 ms 640 KB Output is correct
29 Correct 11 ms 640 KB Output is correct
30 Correct 42 ms 1784 KB Output is correct
31 Correct 39 ms 1664 KB Output is correct
32 Correct 39 ms 1664 KB Output is correct
33 Correct 73 ms 3572 KB Output is correct
34 Correct 75 ms 3516 KB Output is correct
35 Correct 81 ms 3112 KB Output is correct
36 Correct 632 ms 13944 KB Output is correct
37 Correct 622 ms 16480 KB Output is correct
38 Correct 622 ms 16632 KB Output is correct
39 Correct 459 ms 13328 KB Output is correct
40 Correct 424 ms 13636 KB Output is correct
41 Correct 438 ms 13328 KB Output is correct
42 Correct 392 ms 15480 KB Output is correct
43 Correct 393 ms 16256 KB Output is correct
44 Correct 376 ms 16248 KB Output is correct
45 Correct 368 ms 16248 KB Output is correct
46 Correct 349 ms 16248 KB Output is correct
47 Correct 341 ms 16248 KB Output is correct
48 Correct 333 ms 16376 KB Output is correct
49 Correct 337 ms 16248 KB Output is correct
50 Correct 333 ms 16248 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 5 ms 512 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 4 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 5 ms 384 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 5 ms 384 KB Output is correct
18 Correct 5 ms 384 KB Output is correct
19 Correct 8 ms 512 KB Output is correct
20 Correct 8 ms 640 KB Output is correct
21 Correct 10 ms 512 KB Output is correct
22 Correct 21 ms 1024 KB Output is correct
23 Correct 22 ms 1024 KB Output is correct
24 Correct 20 ms 1024 KB Output is correct
25 Correct 20 ms 1024 KB Output is correct
26 Correct 20 ms 1024 KB Output is correct
27 Correct 191 ms 8764 KB Output is correct
28 Correct 203 ms 9064 KB Output is correct
29 Correct 193 ms 9484 KB Output is correct
30 Correct 190 ms 8732 KB Output is correct
31 Correct 262 ms 8824 KB Output is correct
32 Correct 1047 ms 24372 KB Output is correct
33 Correct 348 ms 15224 KB Output is correct
34 Correct 434 ms 19168 KB Output is correct
35 Correct 4 ms 384 KB Output is correct
36 Correct 614 ms 13688 KB Output is correct
37 Correct 2553 ms 49240 KB Output is correct
38 Correct 2573 ms 49272 KB Output is correct
39 Correct 2720 ms 44280 KB Output is correct
40 Correct 873 ms 22240 KB Output is correct
41 Correct 359 ms 11896 KB Output is correct
42 Correct 48 ms 2808 KB Output is correct
43 Execution timed out 3080 ms 46328 KB Time limit exceeded
44 Halted 0 ms 0 KB -