답안 #913934

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
913934 2024-01-20T14:59:01 Z vjudge1 Wish (LMIO19_noras) C++17
0 / 100
2 ms 344 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
#define ent "\n"

const int inf = (int)1e9 + 100;
const int maxn = 5e5 + 100;
const ll INF = (ll)1e18;
const int MOD = 1e9 + 7;
const int maxl = 62500;
const ll P = 31, T = 0;

ll n, R;
ll a[maxn];
ll b[maxn];
ll c[maxn];
ll d[maxn];

bool ok(ll x, ll y){
	if(max(abs(x), abs(y)) > R) return 0;
	return x * x + y * y <= R * R;
}

void test(){
	cin >> n >> R;
	for(int i = 1; i <= n; i++){
		cin >> a[i] >> b[i] >> c[i] >> d[i];
		c[i] -= a[i]; d[i] -= b[i];
		if(a[i] < 0) a[i] *= -1, c[i] *= -1;
		if(b[i] < 0) b[i] *= -1, d[i] *= -1;
	}
	vector<pll> v;
	for(int i = 1; i <= n; i++){
		ll s = -1;
		if(ok(a[i], b[i])){
			s = 0;
		} else{
			for(ll l = 0, r = 2e9; l <= r;){
				ll mid = (l + r) >> 1;
				__int128 x = a[i] + c[i] * mid;
				__int128 y = b[i] + d[i] * mid;
				if(ok(x, y)){
					s = mid; r = mid - 1;
				} else{
					__int128 x1 = a[i] + c[i] * (mid + 1);
					__int128 y1 = b[i] + d[i] * (mid + 1);
					if(x * x + y * y < x1 * x1 + y1 * y1) r = mid - 1;
					else l = mid + 1;
				}
			}
		}
		if(s != -1){
			ll t = -1;
			for(ll l = s, r = 2e9; l <= r;){
				ll mid = (l + r) >> 1;
				ll x = a[i] + c[i] * mid;
				ll y = b[i] + d[i] * mid;
				if(ok(x, y)){
					t = mid; l = mid + 1;
				} else r = mid - 1;
			}
			v.push_back({s, 1});
			v.push_back({t+1, -1});
		}
	}
	int ans = 0, cnt = 0;
	sort(v.begin(), v.end());
	for(int i = 0; i < v.size();){
		int j = i;
		while(j < v.size() && v[j].first == v[i].first){
			cnt += v[j].second; j++;
		}
		ans = max(ans, cnt);
		i = j;
	}
	cout << ans;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    #ifndef ONLINE_JUDGE
	    freopen("input.txt", "r", stdin);
	    freopen("output.txt", "w", stdout);
    #endif
    int t = 1;
    if(T) cin >> t;
    while(t--) test();
}

Compilation message

noras.cpp: In function 'void test()':
noras.cpp:70:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |  for(int i = 0; i < v.size();){
      |                 ~~^~~~~~~~~~
noras.cpp:72:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |   while(j < v.size() && v[j].first == v[i].first){
      |         ~~^~~~~~~~~~
noras.cpp: In function 'int main()':
noras.cpp:85:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   85 |      freopen("input.txt", "r", stdin);
      |      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
noras.cpp:86:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   86 |      freopen("output.txt", "w", stdout);
      |      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -