답안 #670805

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
670805 2022-12-10T15:22:07 Z thiago_bastos Wish (LMIO19_noras) C++17
0 / 100
2 ms 356 KB
#include "bits/stdc++.h"

using namespace std;

#define INF 1000000000
#define INFLL 1000000000000000000ll
#define EPS 1e-9
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define fi first
#define sc second

using i64 = long long;
using u64 = unsigned long long;
using ld = long double;
using ii = pair<int, int>;

int n, radius;

ld my_sqrt(__int128 n) {
	i64 lo = 0, hi = 1e18L;

	while(lo < hi) {
		i64 m = (lo + hi) / 2;
		auto x = (__int128)m * m;
		if(x >= n) hi = m;
		else lo = m + 1;
	}
	
	ld x0 = hi;

	for(int i = 0; i < 64; ++i) x0 = x0 - (x0 * x0 - n) / (2.0L * x0);
	
	return x0;
}

bool getSecs(int a, int b, int c, int d, ld& s1, ld& s2) {
	i64 C = (i64)a * a + (i64)b * b - (i64)radius * radius;
	i64 B = 2 * ((i64)a * c + (i64)b * d);
	i64 A = (i64)c * c + (i64)d * d;
	__int128 D = (__int128)B * B - (__int128)4 * A * C;
	if(D < 0) return false;
	ld delta = my_sqrt(D);
	s1 = (-B - delta) / (2 * A);
	s2 = (-B + delta) / (2 * A); 
	return true;
}

void solve() {
	cin >> n >> radius;

	set<pair<i64, int>> sweep;
	int opening = 0, ans = 0;

	for(int i = 1; i <= n; ++i) {
		int a, b, c, d;
		ld s1, s2;

		cin >> a >> b >> c >> d;

		if(!getSecs(a, b, c - a, d - b, s1, s2)) continue;
		
		i64 l = max(0.0L, ceil(s1)), r = floor(s2); 
		
		if(l > r) continue;

		sweep.emplace(l, -i);
		sweep.emplace(r, i);
	}

	for(auto [x, k] : sweep) {
		opening += k < 0 ? 1 : -1;
		ans = max(ans, opening);
	}

	cout << ans << '\n';
}

int main() {
	ios_base :: sync_with_stdio(false);
	cin.tie(0);
	int t = 1;
	//cin >> t;
	while(t--) solve();
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 2 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 2 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 340 KB Output is correct
16 Correct 2 ms 340 KB Output is correct
17 Correct 2 ms 336 KB Output is correct
18 Correct 2 ms 340 KB Output is correct
19 Incorrect 2 ms 356 KB Output isn't correct
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 2 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 2 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 340 KB Output is correct
16 Correct 2 ms 340 KB Output is correct
17 Correct 2 ms 336 KB Output is correct
18 Correct 2 ms 340 KB Output is correct
19 Incorrect 2 ms 356 KB Output isn't correct
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 2 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 2 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 340 KB Output is correct
16 Correct 2 ms 340 KB Output is correct
17 Correct 2 ms 336 KB Output is correct
18 Correct 2 ms 340 KB Output is correct
19 Incorrect 2 ms 356 KB Output isn't correct
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 2 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 2 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 340 KB Output is correct
16 Correct 2 ms 340 KB Output is correct
17 Correct 2 ms 336 KB Output is correct
18 Correct 2 ms 340 KB Output is correct
19 Incorrect 2 ms 356 KB Output isn't correct
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 2 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 2 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 340 KB Output is correct
16 Correct 2 ms 340 KB Output is correct
17 Correct 2 ms 336 KB Output is correct
18 Correct 2 ms 340 KB Output is correct
19 Incorrect 2 ms 356 KB Output isn't correct
20 Halted 0 ms 0 KB -