Download docker_space/frontier_cs_7/examples/deepseekreasoner_1.cpp from JustinTX/shinka-backup: direct link, hf CLI and curl.
- Browser
- Download file 3.33 kB
-
https://huggingface.co/JustinTX/shinka-backup/resolve/main/docker_space/frontier_cs_7/examples/deepseekreasoner_1.cpp
- Command line
-
hf download hf://JustinTX/shinka-backup/docker_space/frontier_cs_7/examples/deepseekreasoner_1.cpp
-
curl -L -o deepseekreasoner_1.cpp https://huggingface.co/JustinTX/shinka-backup/resolve/main/docker_space/frontier_cs_7/examples/deepseekreasoner_1.cpp
3.33 kB
| using namespace std; | |
| struct State { | |
| int i, low, high; | |
| bool operator<(const State& other) const { | |
| if (i != other.i) return i < other.i; | |
| if (low != other.low) return low < other.low; | |
| return high < other.high; | |
| } | |
| }; | |
| int main() { | |
| int L, R; | |
| cin >> L >> R; | |
| auto get_bin = [](int x) -> vector<int> { | |
| vector<int> res; | |
| while (x > 0) { | |
| res.push_back(x % 2); | |
| x /= 2; | |
| } | |
| reverse(res.begin(), res.end()); | |
| return res; | |
| }; | |
| vector<int> L_bin = get_bin(L); | |
| vector<int> R_bin = get_bin(R); | |
| int lenL = L_bin.size(); | |
| int lenR = R_bin.size(); | |
| vector<vector<vector<bool>>> productive(lenR, vector<vector<bool>>(2, vector<bool>(2, false))); | |
| for (int i = lenR - 1; i >= 0; --i) { | |
| for (int low = 0; low <= 1; ++low) { | |
| for (int high = 0; high <= 1; ++high) { | |
| for (int b = 0; b <= 1; ++b) { | |
| bool ok = true; | |
| if (low == 1 && i < lenL && b < L_bin[i]) ok = false; | |
| if (high == 1 && i < lenR && b > R_bin[i]) ok = false; | |
| if (!ok) continue; | |
| if (i + 1 >= lenL && i + 1 <= lenR) productive[i][low][high] = true; | |
| if (i + 1 < lenR) { | |
| int new_low = (low && i < lenL && b == L_bin[i]) ? 1 : 0; | |
| int new_high = (high && i < lenR && b == R_bin[i]) ? 1 : 0; | |
| if (productive[i + 1][new_low][new_high]) | |
| productive[i][low][high] = true; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| map<State, int> idMap; | |
| vector<vector<pair<int, int>>> edges(1); | |
| int next_id = 1; | |
| State start{0, 1, 1}; | |
| idMap[start] = next_id++; | |
| edges.push_back({}); | |
| queue<State> q; | |
| q.push(start); | |
| while (!q.empty()) { | |
| State s = q.front(); q.pop(); | |
| int u = idMap[s]; | |
| for (int b = 0; b <= 1; ++b) { | |
| if (s.low == 1 && s.i < lenL && b < L_bin[s.i]) continue; | |
| if (s.high == 1 && s.i < lenR && b > R_bin[s.i]) continue; | |
| if (s.i + 1 >= lenL && s.i + 1 <= lenR) | |
| edges[u].push_back({0, b}); | |
| if (s.i + 1 < lenR) { | |
| int new_low = (s.low && s.i < lenL && b == L_bin[s.i]) ? 1 : 0; | |
| int new_high = (s.high && s.i < lenR && b == R_bin[s.i]) ? 1 : 0; | |
| if (productive[s.i + 1][new_low][new_high]) { | |
| State ns{s.i + 1, new_low, new_high}; | |
| if (!idMap.count(ns)) { | |
| idMap[ns] = next_id++; | |
| edges.push_back({}); | |
| q.push(ns); | |
| } | |
| int v = idMap[ns]; | |
| edges[u].push_back({v, b}); | |
| } | |
| } | |
| } | |
| } | |
| int state_count = idMap.size(); | |
| int T_id = state_count + 1; | |
| int n = T_id; | |
| cout << n << "\n"; | |
| for (int u = 1; u <= state_count; ++u) { | |
| cout << edges[u].size(); | |
| for (auto& e : edges[u]) { | |
| int to = e.first, w = e.second; | |
| if (to == 0) to = T_id; | |
| cout << " " << to << " " << w; | |
| } | |
| cout << "\n"; | |
| } | |
| cout << "0\n"; | |
| return 0; | |
| } |