제출 #943147

#제출 시각아이디문제언어결과실행 시간메모리
943147Tuanlinh123Nicelines (RMI20_nicelines)C++17
84.78 / 100
43 ms708 KiB
#include "nice_lines.h" #include<bits/stdc++.h> #define ll int #define pll pair<ll, ll> #define pb push_back #define mp make_pair #define fi first #define se second #define ld long double #define sz(a) ((ll)(a).size()) using namespace std; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); ll random(ll l, ll r){return l+rng()%(r-l+1);} const ld eps=1e-7; void solve(ll subtask_id, ll n) { ll V=1e4, X=V*2+1; auto calc=[&](ld y){return query(X, y);}; vector <ll> va, vb; function<void(ld, ld, ld, ld)> DnC=[&](ld l, ld r, ld fl, ld fr) { ld mid=(l+r)/2, fm=calc(mid); if (abs((fl+fr)/2-fm)<eps) return; if ((r-l)<1.0) { long double c=(calc(r+0.1)-fr-fl+calc(l-0.1))/2; long double d=sqrtl(max<long double>(0.0, 0.1*0.1-c*c)); int a=round(d/c); if (mid<-eps) a=-a; int b=round(mid-X*a); va.push_back(a); vb.push_back(b); return; } DnC(l, mid, fl, fm), DnC(mid, r, fm, fr); return; }; ld l=-V*X-V, r=V*X+V; if (n==3) l+=random(1, 10), r-=random(1, 10); DnC(l, r, calc(l), calc(r)); the_lines_are(va, vb); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...