Submission #828470

#TimeUsernameProblemLanguageResultExecution timeMemory
828470rainboyNicelines (RMI20_nicelines)C11
0 / 100
29 ms208 KiB
#include "nice_lines_c.h" #define N 100 #define M 10000 #define X (M * 2 + 1) #define Y ((long long) M * X + M + 1) typedef long double ld; ld abs_(ld a) { return a > 0 ? a : -a; } ld max(ld a, ld b) { return a > b ? a : b; } long double error(long double a, long double b) { return abs_(a - b) / max(abs_(b), 1); } void solve(int subtask_id, int n) { static int aa[N], bb[N]; long long y, y1, lower, upper, a, b; ld z, z1, z2; int i; y1 = -Y, z1 = query(X, y1), z2 = query(X, y1 + 1); for (i = 0; i < n; i++) { lower = y1, upper = Y + 1; while (upper - lower > 1) { y = (lower + upper) / 2; z = query(X, y); if (error(z1 + (z2 - z1) * (y - y1), z) < 1e-12) lower = y; else upper = y; } y1 = lower, z1 = query(X, y1), z2 = query(X, y1 + 1); a = lower / X, b = y1 - a * X; while (b > M) a++, b -= X; while (b < -M) a--, b += X; aa[i] = a, bb[i] = b; } the_lines_are(aa, bb); }
#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...