This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |