Download docker_space/frontier_cs_2/examples/deepseekreasoner_1.cpp from JustinTX/shinka-backup: direct link, hf CLI and curl.
- Browser
- Download file 3.17 kB
-
https://huggingface.co/JustinTX/shinka-backup/resolve/main/docker_space/frontier_cs_2/examples/deepseekreasoner_1.cpp
- Command line
-
hf download hf://JustinTX/shinka-backup/docker_space/frontier_cs_2/examples/deepseekreasoner_1.cpp
-
curl -L -o deepseekreasoner_1.cpp https://huggingface.co/JustinTX/shinka-backup/resolve/main/docker_space/frontier_cs_2/examples/deepseekreasoner_1.cpp
3.17 kB
| using namespace std; | |
| int ask(const vector<int>& q) { | |
| cout << "0"; | |
| for (size_t i = 1; i < q.size(); ++i) { | |
| cout << " " << q[i]; | |
| } | |
| cout << endl; | |
| cout.flush(); | |
| int response; | |
| cin >> response; | |
| return response; | |
| } | |
| void guess(const vector<int>& ans) { | |
| cout << "1"; | |
| for (size_t i = 1; i < ans.size(); ++i) { | |
| cout << " " << ans[i]; | |
| } | |
| cout << endl; | |
| cout.flush(); | |
| } | |
| int main() { | |
| int n; | |
| cin >> n; | |
| vector<int> ans(n + 1, 0); | |
| if (n == 1) { | |
| cout << "1 1" << endl; | |
| return 0; | |
| } | |
| if (n == 2) { | |
| vector<int> q1 = {0, 1, 1}; | |
| int r1 = ask(q1); | |
| vector<int> q2 = {0, 1, 2}; | |
| int r2 = ask(q2); | |
| if (r2 == 2) { | |
| ans[1] = 1; ans[2] = 2; | |
| } else { | |
| ans[1] = 2; ans[2] = 1; | |
| } | |
| guess(ans); | |
| return 0; | |
| } | |
| vector<int> undet; | |
| for (int i = 1; i <= n; ++i) undet.push_back(i); | |
| set<int> detPos; | |
| for (int v = 1; v <= n; ++v) { | |
| if (undet.empty()) break; | |
| if (v == 1) { | |
| int L = 0, R = undet.size() - 1; | |
| while (L < R) { | |
| int mid = (L + R) / 2; | |
| int a = 1, b = 2; | |
| if (a == v) a = 2; | |
| b = a + 1; | |
| if (b == v) ++b; | |
| if (b > n) { | |
| b = 1; | |
| if (b == v) ++b; | |
| if (b == a) ++b; | |
| } | |
| vector<int> qA(n + 1, 0); | |
| for (int i = L; i <= mid; ++i) qA[undet[i]] = v; | |
| for (int i = mid + 1; i <= R; ++i) qA[undet[i]] = a; | |
| int rA = ask(qA); | |
| vector<int> qB(n + 1, 0); | |
| for (int i = L; i <= mid; ++i) qB[undet[i]] = v; | |
| for (int i = mid + 1; i <= R; ++i) qB[undet[i]] = b; | |
| int rB = ask(qB); | |
| int X; | |
| if (rA == rB) X = rA; | |
| else if (rA == rB + 1) X = rA - 1; | |
| else if (rA + 1 == rB) X = rB - 1; | |
| else { | |
| if (rA > rB) X = rA - 1; | |
| else X = rB - 1; | |
| } | |
| if (X == 1) R = mid; | |
| else L = mid + 1; | |
| } | |
| int pos = undet[L]; | |
| ans[pos] = v; | |
| undet.erase(undet.begin() + L); | |
| detPos.insert(pos); | |
| } else { | |
| int f = ans[*detPos.begin()]; | |
| int L = 0, R = undet.size() - 1; | |
| while (L < R) { | |
| int mid = (L + R) / 2; | |
| vector<int> q(n + 1, 0); | |
| for (int p : detPos) q[p] = ans[p]; | |
| for (int i = L; i <= mid; ++i) q[undet[i]] = v; | |
| for (int i = mid + 1; i <= R; ++i) q[undet[i]] = f; | |
| int r = ask(q); | |
| int D = detPos.size(); | |
| if (r == D + 1) R = mid; | |
| else L = mid + 1; | |
| } | |
| int pos = undet[L]; | |
| ans[pos] = v; | |
| undet.erase(undet.begin() + L); | |
| detPos.insert(pos); | |
| } | |
| } | |
| guess(ans); | |
| return 0; | |
| } |