Submission #1349683

#TimeUsernameProblemLanguageResultExecution timeMemory
1349683mikasaRed-blue table (IZhO19_stones)C++20
27 / 100
0 ms344 KiB
#include<bits/stdc++.h>
using namespace std;
#define debug(n,m) cout<<"["<<#n<<"]->"<<n<<m
#define int long long
#define all(x,off) x.begin()+off,x.end()
#define pb push_back 

const int N=1e6+10;
const int inf=9e17;
const int mod=1e9+7;

int n,m;
void solve_sub2() {
  if (n>m) {
    if (m<=2) {
      cout<<n<<'\n';
      for (int i=1;i<=n;++i) {
        cout<<string(m,'+')<<'\n';
      }
    }
    else {
      cout<<n+1<<'\n';
      for (int i=1;i<=n;++i) {
        cout<<"++-\n";
      }
    }
  }
  else {
    if (n<=2) {
      cout<<m<<'\n';
      cout<<string(m,'-')<<'\n';
      if (n==2)cout<<string(m,'-')<<'\n';
    }
    else {
      cout<<m+1<<'\n';
      cout<<string(m,'-')<<'\n';
      cout<<string(m,'+')<<'\n';
      cout<<string(m,'-')<<'\n';
    }
  }
}

void solve_sub3() {
  if (m>=n) {
    if (n==4) {
      cout<<m+1<<'\n';
      cout<<string(m,'-')<<'\n';
      cout<<string(m,'-')<<'\n';
      cout<<string(m,'-')<<'\n';
      cout<<string(m,'+')<<'\n';
    }
    else {
      if (m&1) {
        cout<<m+n-2<<'\n';
        cout<<string(m,'-')<<'\n';
        cout<<string(m/2,'-')<<"+"<<string(m/2,'+')<<'\n';
        cout<<string(m/2,'-')<<"+"<<string(m/2,'+')<<'\n';
        cout<<string(m/2,'+')<<"+"<<string(m/2,'-')<<'\n';
        cout<<string(m/2,'+')<<"+"<<string(m/2,'-')<<'\n';
        return;
      }
      cout<<m+2<<'\n';
      cout<<string(m,'-')<<'\n';
      cout<<string(m,'-')<<'\n';
      cout<<string(m,'-')<<'\n';
      cout<<string(m,'+')<<'\n';
      cout<<string(m,'+')<<'\n';
    }
  }
  else {
    if (m==4) {
      cout<<n+1<<'\n';
      for (int i=1;i<=n;++i) {
        cout<<"+++-"<<'\n';
      }
    }
    else {
      if (n&1) {
        cout<<n+m-2<<'\n';
        for (int i=1;i<=n/2;++i) {
          cout<<"+++--"<<'\n';
        }
        cout<<"--+--"<<'\n';
        for (int i=1;i<=n/2;++i) {
          cout<<"--+++"<<'\n';
        }
      }
      else {
        cout<<n+2<<'\n';
        for (int i=1;i<=n;++i) {
          cout<<"+++--"<<'\n';
        }
      }
    }
  }
}

void levi() {
  cin>>n>>m;
  //if (n*m<=16) solve_sub1();
  if (min(n,m)<=3)solve_sub2();
  else if (min(n,m)<=5)solve_sub3();
}

int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);int tt=1;cin>>tt;
  while (tt--) levi();
}

/*


*/
#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...