Submission #909928

#TimeUsernameProblemLanguageResultExecution timeMemory
909928daoquanglinh2007Nice sequence (IZhO18_sequence)C++17
6 / 100
1 ms2396 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int NM = 4e5, LIM = 1e6; int T, N, M, k; int sum[NM+5]; bool vis[NM+5]; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); int get_rand(int l, int r){ int tmp = rng()%(r-l+1); if (tmp < 0) tmp += r-l+1; return l + tmp; } void dfs(int u){ vis[u] = 1; if (u-N >= 0 && !vis[u-N]){ sum[u-N] = sum[u]+1; dfs(u-N); } if (u+M <= k && !vis[u+M]){ sum[u+M] = sum[u]+1; dfs(u+M); } } signed main(){ // freopen("TEST.inp", "r", stdin); // freopen("TEST.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> T; while (T--){ cin >> N >> M; if (N%M == 0){ cout << N-1 << '\n'; for (int i = 1; i < N; i++) cout << 1 << ' '; cout << '\n'; continue; } if (M%N == 0){ cout << M-1 << '\n'; for (int i = 1; i < M; i++) cout << -1 << ' '; cout << '\n'; continue; } k = N+M-__gcd(N, M)-1; while (true){ for (int i = 0; i <= k; i++) vis[i] = 0; for (int i = 0; i <= k; i++) if (!vis[i]){ sum[i] = get_rand(-LIM, LIM); dfs(i); } bool ok = 1; for (int i = 1; i <= k; i++) if (sum[i] == sum[i-1]) ok = 0; if (ok) break; } cout << k << '\n'; for (int i = 1; i <= k; i++){ cout << sum[i]-sum[i-1] << ' '; } cout << '\n'; } 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...