Submission #4008251


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 16;
using real_t = double;
using pi = pair<real_t, real_t>;

int n, ret, r[MAXN];
pi s[MAXN], t[MAXN];
bool vis[1 << MAXN];

real_t dist(pi s, pi e){
	return hypot(e.first - s.first, e.second - s.second);
}

real_t ccw(pi a, pi b, pi c){
	real_t dx1 = b.first - a.first;
	real_t dy1 = b.second - a.second;
	real_t dx2 = c.first - a.first;
	real_t dy2 = c.second - a.second;
	return dx1 * dy2 - dy1 * dx2;
}
real_t dot(pi a, pi b, pi c){
	real_t dx1 = b.first - a.first;
	real_t dy1 = b.second - a.second;
	real_t dx2 = c.first - a.first;
	real_t dy2 = c.second - a.second;
	return dx1 * dx2 + dy1 * dy2;
}

double seg_to_point(pi s, pi e, pi x){
	if(dot(s, e, x) < 0) return dist(s, x);
	if(dot(e, s, x) < 0) return dist(e, x);
	return fabs(ccw(s, e, x)) / dist(s, e);
}

bool Collide(int c, pi cen, int rad){
	return seg_to_point(s[c], t[c], cen) <= rad; 
}

bool Move(int msk, int c){
	for(int i=0; i<n; i++){
		if(i != c){
			if((msk >> i) % 2 == 1 && Collide(c, t[i], r[i] + r[c])) return 0;
			if((msk >> i) % 2 == 0 && Collide(c, s[i], r[i] + r[c])) return 0;
		}
	}
	return 1;
}

void dfs(int msk, int d){
	ret = max(ret, d);
	vis[msk] = 1;
	for(int i=0; i<n; i++){
		if((msk >> i) & 1) continue;
		if(!vis[msk | (1 << i)] && Move(msk, i)){
			dfs(msk | (1 << i), d + 1);
		}
	}
}

int main(){
	cin >> n;
	for(int i=0; i<n; i++){
		cin >> r[i] >> s[i].first >> s[i].second >> t[i].first >> t[i].second;
	}
	dfs(0, 0);
	cout << ret << endl;
}

Submission Info

Submission Time
Task G - Coin Slider
User koosaga
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1578 Byte
Status AC
Exec Time 20 ms
Memory 256 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 27
Set Name Test Cases
All 00_sample_00, 00_sample_01, 00_sample_02, 10_random_0, 10_random_1, 10_random_2, 10_random_3, 10_random_4, 10_random_5, 10_random_6, 10_random_7, 10_random_8, 10_random_9, 20_small_r_0, 20_small_r_1, 20_small_r_2, 20_small_r_3, 20_small_r_4, 20_small_r_5, 20_small_r_6, 20_small_r_7, 20_small_r_8, 20_small_r_9, 90_align_0, 91_star_0, 99_max_0, 99_max_1
Case Name Status Exec Time Memory
00_sample_00 AC 1 ms 256 KB
00_sample_01 AC 1 ms 256 KB
00_sample_02 AC 1 ms 256 KB
10_random_0 AC 1 ms 256 KB
10_random_1 AC 1 ms 256 KB
10_random_2 AC 1 ms 256 KB
10_random_3 AC 1 ms 256 KB
10_random_4 AC 1 ms 256 KB
10_random_5 AC 1 ms 256 KB
10_random_6 AC 1 ms 256 KB
10_random_7 AC 1 ms 256 KB
10_random_8 AC 1 ms 256 KB
10_random_9 AC 1 ms 256 KB
20_small_r_0 AC 1 ms 256 KB
20_small_r_1 AC 1 ms 256 KB
20_small_r_2 AC 1 ms 256 KB
20_small_r_3 AC 1 ms 256 KB
20_small_r_4 AC 1 ms 256 KB
20_small_r_5 AC 1 ms 256 KB
20_small_r_6 AC 1 ms 256 KB
20_small_r_7 AC 3 ms 256 KB
20_small_r_8 AC 1 ms 256 KB
20_small_r_9 AC 1 ms 256 KB
90_align_0 AC 1 ms 256 KB
91_star_0 AC 1 ms 256 KB
99_max_0 AC 18 ms 256 KB
99_max_1 AC 20 ms 256 KB