제출 #1114171

#제출 시각아이디문제언어결과실행 시간메모리
1114171vjudge1Nice sequence (IZhO18_sequence)C++17
15 / 100
6 ms1016 KiB
#include <bits/stdc++.h>
#define pb push_back
#define spc << " " <<
#define endl "\n"
#define all(x) x.begin(), x.end()
#define int long long
#define ii pair<long long,int>
#define vi vector<int>
#define vii vector<ii>
#define st first
#define nd second
#define mid (l+r)/2
#define inf 1e15
#define MOD 998244353
#define MX 100000
using namespace std;


void solve(){
    int n,m; cin >> n >> m;//assuming m is bigger
    int modi=1;
    if(n>m){
        modi=-1;
        swap(n,m);
    }
    int x=(m-1)/n;
    int wow=x+1+x*(n-1)+2*(m-n-1);
    int wow2=(x+1)*n-1;
    if((m-1)%n==0){
        cout << wow2 << endl;
        if(wow2==0) return;
        for(int i=1; i<=wow2; i++){
            if(i%n==0) cout << -modi*((m-1)/n+1)*(n-1)-modi << " ";
            else cout << ((m-1)/n+1)*modi << " ";
        }
        cout << endl;
    }
    else if(m%n==0 || m-1>=wow){
        cout << m-1 << endl;
        if(m-1==0) return;
        for(int i=1; i<=m-1; i++){
            cout << -modi << " ";
        }
        cout << endl;
    }
    else{
        int A,B;
        B=x+2;
        A=-x-(n-1)*B;
        if((x+1)*A+(m-x-1)*B<=0 || A+(n-1)*B>=0){
            B=-B;
            A=-x-(n-1)*B;
        }
        if((x+1)*A+(m-x-1)*B<=0 || A+(n-1)*B>=0){
            cout << 0 << endl;
            return;
        }
        cout << wow << endl;
        if(wow==0) return;
        for(int i=1; i<=m-n-1; i++){
            cout << modi*B << " ";
        }
        for(int i=0; i<wow-2*(m-n-1); i++){
            if(i%n==0){
                cout << modi*A << " ";
            }
            else cout << modi*B << " ";
        }
        for(int i=1; i<=m-n-1; i++){
            cout << modi*B << " ";
        }
        cout << endl;
    }
}


signed main(){
    ios_base::sync_with_stdio(false);cin.tie(0);
    #ifdef Local
    freopen("in","r",stdin);
    freopen("out","w",stdout);
    /*#else
    freopen("248.in","r",stdin);
    freopen("248.out","w",stdout);*/
    #endif


    int t=1;
    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...