Submission #1114295

#TimeUsernameProblemLanguageResultExecution timeMemory
1114295dostsNice sequence (IZhO18_sequence)C++17
100 / 100
821 ms108784 KiB
//Dost SEFEROĞLU #include <bits/stdc++.h> #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt") using namespace std; //#define int long long #define pii pair<int,int> #define ff first #define ss second #define sp << " " << #define all(cont) cont.begin(),cont.end() #define vi vector<int> const int MOD = 1e9+7,inf = 2e18; const int N = 2e5+50,Q = 2e5+50; const int LIM = 2000001; vi edges[LIM]; bool vis[LIM],act[LIM]; int v[LIM]; struct DAG { int nd; bool cyclic = 0; void addedge(int a,int b) { edges[a].push_back(b); } void reset() { cyclic = 0;; for (int i = 0;i<=nd;i++) edges[i].clear(),vis[i] = 0,act[i] = 0; } void cyclecheck(int node) { if (vis[node]) return; if (cyclic) return; vis[node] = act[node] = 1; for (auto it : edges[node]) { if (act[it]) { cyclic = 1; return; } else if (!vis[it]) cyclecheck(it); } act[node] = 0; } void checkcycle() { for (int i = 0;i<=nd;i++) { cyclecheck(i); if (cyclic) break; } } int mex = 1; int dfs(int node) { if (vis[node]) return v[node]; vis[node] = 1; for (auto it : edges[node]) dfs(it); return v[node] = mex++; } void solve() { for (int i = 0;i<=nd;i++) vis[i] = 0; for (int i = 0;i<=nd;i++) dfs(i); } }; void solve() { int n,m; cin >> n >> m; DAG D; int r = n+m-__gcd(n,m)-1; memset(v,-1,sizeof v); for (int i=0;i<=r;i++) edges[i].clear(); cout << r << '\n'; D.nd = r; for (int i = 1;i<=r;i++) { if (i >= m) D.addedge(i,i-m); if (i >= n) D.addedge(i-n,i); } D.solve(); for (int i = 1;i<=r;i++) { assert(v[i] != v[i-1]); cout << v[i]-v[i-1] << ' '; } cout << '\n'; } signed main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #ifdef Dodi freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t = 1; cin >> t; while (t --> 0) solve(); }

Compilation message (stderr)

sequence.cpp:12:29: warning: overflow in conversion from 'double' to 'int' changes value from '2.0e+18' to '2147483647' [-Woverflow]
   12 | const int MOD = 1e9+7,inf = 2e18;
      |                             ^~~~
#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...