Submission #686744

#TimeUsernameProblemLanguageResultExecution timeMemory
686744quinqueNice sequence (IZhO18_sequence)C++17
100 / 100
1985 ms73800 KiB
//#pragma GCC optimize("unroll-loops") //#pragma GCC optimize("O3") //#pragma GCC target("sse4,avx2,fma,avx") #include <stdlib.h> #include <time.h> #include <algorithm> #include <bitset> #include <chrono> #include <climits> #include <cmath> #include <fstream> #include <functional> #include <iomanip> #include <iostream> #include <map> #include <numeric> #include <queue> #include <random> #include <set> #include <sstream> #include <stack> #include <string> #include <stdio.h> #include <string.h> #include <vector> #include <unordered_map> #define ll long long #define ull unsigned long long #define unit unsigned int #define ld double #define F first #define S second // chrono::system_clock::now().time_since_epoch().count()); using namespace std; const int N = 4e5 + 100, IINF = 1e9 + 10, LOG = 19, K = 1 << 10; const ll INF = 1e18 + 214; bitset<N> usd; int pref[N]; vector<int> g[N]; vector<int> top; void dfs(int v){ if (usd[v]) return; usd[v] = 1; for (auto i : g[v]) dfs(i); top.push_back(v); } int gcd(int a, int b){ if (b == 0) return a; return gcd(b, a % b); } int nw = 0; void fill(int v){ if (usd[v]) return; usd[v] = 1; nw --; for (auto i : g[v]){ pref[i] = pref[v] - 1; fill(i); } } inline void solve(){ int n, m; cin >> n >> m; int start = -1; if (n > m) swap(n, m), start *= -1; int l = n + m - 1 - gcd(n, m); cout << l << '\n'; for (int i = 0; i <= l; i ++){ g[i].clear(); if (i + m <= l) g[i].push_back(i + m); if (i - n >= 0) g[i].push_back(i - n); } usd = 0; top.clear(); for (int i = 0; i <= l; i ++){ if (usd[i]) continue; dfs(i); } //cout << "why" << '\n'; reverse(top.begin(), top.end()); usd = 0; nw = IINF; for (auto i: top){ if (!usd[i]){ pref[i] = nw; fill(i); } } for (int i = 1; i <= l; i ++) cout << (pref[i] - pref[i - 1]) * start << ' '; cout << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int T; 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...