Submission #1191121

#TimeUsernameProblemLanguageResultExecution timeMemory
1191121lopkusNice sequence (IZhO18_sequence)C++20
0 / 100
20 ms13640 KiB
#include <bits/stdc++.h> const int N = 3e5 + 5; std::vector<std::vector<int>> adj(N); std::vector<int> was(N, 1); std::vector<int> in(N); std::vector<int64_t> pref(N); void solve() { int n, m; std::cin >> n >> m; int l = 1, r = 1e5, ans = 0; while(l <= r) { int mid = (l + r) / 2; int64_t t = 10000001; for(int i = 1; i + n - 1 <= mid; i++) { adj[i - 1].push_back(i + n - 1); in[i + n - 1] += 1; } for(int i = 1; i + m - 1 <= mid; i++) { adj[i + m - 1].push_back(i - 1); in[i - 1] += 1; } std::queue<int> Q; for(int i = 0; i <= mid; i++) { if(in[i] == 0) { Q.push(i); } } int cycle = 0; while(!Q.empty()) { int now = (Q.front()); was[now] = 0; pref[now] = t--; Q.pop(); for(auto u : adj[now]) { in[u]--; if(in[u] == 0) { Q.push(u); } } } for(int i = 0; i <= mid; i++) { cycle |= was[i]; } if(cycle) { r = mid - 1; } else { l = mid + 1; ans = mid; } for(int i = 0; i <= mid; i++) { adj[i].clear(); was[i] = 1; in[i] = 0; } } std::cout << ans << "\n"; for(int i = 1; i <= ans; i++) { std::cout << pref[i] - pref[i - 1] << " "; } std::cout << "\n"; } signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int t = 1; std::cin >> t; while (t--) { solve(); } return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...