Submission #944580

#TimeUsernameProblemLanguageResultExecution timeMemory
944580daoquanglinh2007Nicelines (RMI20_nicelines)C++17
11 / 100
34 ms700 KiB
#include <bits/stdc++.h> #include "nice_lines.h" using namespace std; #define ld long double #define pii pair <int, int> #define fi first #define se second #define mp make_pair const int LIM = 1e4, x0 = 2*LIM, MAX_DEP = 31; const ld EPS = 1e-9, inf = 1e18; vector <int> va, vb; set <pii> S; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int get_rand(int l, int r){ int tmp = rng()%(r-l+1); if (tmp < 0) tmp += r-l+1; return l + tmp; } void get(ld y){ int b = int(round(y+x0*LIM+LIM))%x0-LIM, a = int(round(y-b)/(ld)x0); if (!S.count(mp(a, b))){ va.push_back(a); vb.push_back(b); S.insert(mp(a, b)); } } void dnc(int dep, ld l, ld r, ld fl, ld fr){ if (dep >= MAX_DEP){ get(l); return; } ld mid = (l+r)/2.0; if (fl == +inf) fl = query(x0, l); if (fr == +inf) fr = query(x0, r); ld fmid = query(x0, mid); if (abs(2.0*fmid - (fl+fr)) <= EPS) return; dnc(dep+1, l, mid, fl, fmid); dnc(dep+1, mid, r, fmid, fr); } void solve(int subtask_id, int N){ va.clear(); vb.clear(); dnc(0, -2*LIM*(x0+1)-get_rand(0, 100), 2*LIM*(x0+1)+get_rand(0, 100), +inf, +inf); 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...