Submission #739541

#TimeUsernameProblemLanguageResultExecution timeMemory
739541Kirill22Nicelines (RMI20_nicelines)C++17
0 / 100
34 ms468 KiB
//#include "lines.h" #include "bits/stdc++.h" using namespace std; long double query(long double x, long double y); void the_lines_are(std::vector<int> a, std::vector<int> b); int x = (1 << 15); map<int, long double> mem; long double query(int y) { if (mem.find(y) != mem.end()) { return mem[y]; } return mem[y] = query(x, y); } void solve(int subtask_id, int N) { if (subtask_id == 4) { x = 1024; } vector<int> res; function<void(int, int)> solve = [&] (int l, int r) { //cout << l << " " << r << endl; if (r - l == 1) { if (abs(query(l) * 2 - query(l + 1) - query(l - 1)) > 1e-4) { res.push_back(l); } if (abs(query(r) * 2 - query(r + 1) - query(r - 1)) > 1e-4) { res.push_back(r); } return; } int m = (l + r) / 2; if (abs(query(m) * 2 - query(l) - query(r)) < 1e-4) { return; } solve(l, m); solve(m, r); }; if (subtask_id == 4) { solve(-x * (1 << 14), x * (1 << 14)); } else { solve(-x * (1 << 14), x * (1 << 14)); } vector<int> a, b; for (int i = 0; i < N; i++) { int y = res[i] % x; if (y < 0) { y += x; } if (y >= x / 2) { y -= x; } b.push_back(y); a.push_back((res[i] - y) / x); } the_lines_are(a, b); }
#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...