Submission #495959

#TimeUsernameProblemLanguageResultExecution timeMemory
495959IerusNice sequence (IZhO18_sequence)C++17
15 / 100
1695 ms972 KiB
#include<bits/stdc++.h> /* #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; */ using namespace std; #pragma GCC optimize ("unroll-loops,Ofast,O3") #pragma GCC target("avx,avx2,fma") #define F first #define S second #define sz(x) (int)x.size() #define pb push_back #define eb emplace_back #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define NFS ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0) ; #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) //#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> typedef long long ll; const int E = 1e6+777; const long long inf = 1e18+777; const int N = 1e5+777; const int MOD = 1e9+7; const bool I = 1; int n, m; vector<int> ans; vector<int>v; bool check(){ for(int i = 0; i < sz(v); ++i){ if(i + n - 1 < sz(v)){ int sum = 0; for(int j = i; j <= i + n - 1; ++j){ sum += v[j]; } if(sum >= 0) return false; } if(i + m - 1 < sz(v)){ int sum = 0; for(int j = i; j <= i + m - 1; ++j){ sum += v[j]; } if(sum <= 0) return false; } } return true; } int mx = 0; void rec(int len ){ if(check()){ if(sz(v) > mx){ mx = sz(v); ans = v; } } if(len == max(n, m)+3) return; for(int i= -2; i <= 2; ++i){ if(i == 0) continue; v.pb(i); rec(len + 1); v.pop_back(); } } int main(){auto solve=[&](){ cin >> n >> m; if(n == 2){ if(m % 2 == 0) --m; cout << m << '\n'; for(int i = 1; i <= m; ++i){ if(i & 1) cout << "444441 "; else cout << "-444442 "; } cout << '\n'; }else if(m == 2){ if(n % 2 == 0) -- n; cout << n << '\n'; for(int i = 1; i <= n; ++i){ if(i & 1) cout << "-444441 "; else cout << "444442 "; } cout << '\n'; }else{ if(m % n == 0 && m >= n){ cout << m - 1 << '\n'; for(int i = 1; i < m; ++i) cout << "-1 "; cout << '\n'; }else if(n % m == 0 && n >= m){ cout << n - 1 << '\n'; for(int i = 1; i < n; ++i) cout << "1 "; cout << '\n'; }else{ ans.clear(); mx = 0; if(n <= 10 && m <= 10){ rec(0); cout << sz(ans) << '\n'; for(auto it : ans) cout << it << ' '; cout << '\n'; }else{ cout << "0\n"; } } } };NFS;int T=1;if(I)cin>>T;while(T--)solve();}
#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...