Submission #957129

#TimeUsernameProblemLanguageResultExecution timeMemory
957129pragmatistNice sequence (IZhO18_sequence)C++17
76 / 100
2059 ms48208 KiB
#include <bits/stdc++.h> using namespace std; const int N = (int)4e5+20; const int inf = (int)1e9+7; const long long INF = (long long)1e18+7; const int MOD = 42043; int sum(int x, int y) { x += y; if(x >= MOD) { x -= MOD; } return x; } int mult(int x, int y) { return 1ll*x*y%MOD; } int n, m, b[N], dp[N]; bool ok; vector<int> g[N], ord; int used[N]; void dfs(int v) { used[v] = 1; if(!ok) { return; } for(auto to : g[v]) { if(used[to] == 1) { ok = 0; return; } if(!used[to]) { dfs(to); } } used[v] = 2; ord.push_back(v); } bool may(int len) { for(int i = 0; i <= len; ++i) { g[i].clear(); used[i] = 0; dp[i] = 0; } ord.clear(); for(int i = n; i <= len; ++i) { g[i].push_back(i-n); } for(int i = m; i <= len; ++i) { g[i-m].push_back(i); } ok = 1; for(int i = 0; i <= len; ++i) { if(!used[i]) { dfs(i); } } if(!ok) { return 0; } reverse(ord.begin(), ord.end()); int timer = 0; for(auto i : ord) { dp[i] = ++timer; } for(int i = 0; i <= len; ++i) { b[i] = dp[i]; } return 1; } void test_case() { cin >> n >> m; int l = 0, r = 4e5, len = -1; while(l <= r) { int mid = (l+r)/2; if(may(mid)) { len = mid; l = mid+1; } else { r = mid-1; } } assert(len != -1); cout << len << "\n"; for(int i = 1; i <= len; ++i) { cout << b[i]-b[i-1] << ' '; } cout << "\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while(t--) { test_case(); } 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...