Submission #1122793

#TimeUsernameProblemLanguageResultExecution timeMemory
1122793TestTestovRed-blue table (IZhO19_stones)C++20
0 / 100
7 ms4420 KiB
#include <bits/stdc++.h>
using namespace std;

#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define vii vector<vi>
#define ff first
#define ss second
#define vi vector<int>
#define ll long long
#define pii pair<int, int>
#define EPS 1e-7
#define hashsize(n) ((int)1<<(n))
#define hashmask(n) (hashsize(n)-1)
#define cmin(a, b) a = min(a, b)
#define cmax(a, b) a = max(a, b)
#define forn(i,n) for(int i=0; i<(int)n; i++)
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
const ll MOD = 1e9+7;
const ll md2=998244353;
const int MAXN = 2e5+10;
const ll INF = 2*1e9;
const int maxn = 2e5+10, maxn2=maxn+1000;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

template <typename T>
using sett = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename T>
using multisett = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;

namespace io {
    template <typename T, typename F>
    istream &operator>>(istream &cin, pair<T, F> &pr) {
        cin >> pr.first >> pr.second;
        return cin;
    }

    template <typename T, typename F>
    ostream &operator<<(ostream &cout, pair<T, F> &pr) {
        cout << pr.first << ' ' << pr.second;
        return cout;
    }

    template <typename T>
    istream &operator>>(istream &cin, vector<T> &vec) {
        for (T &i : vec)
            cin >> i;
        return cin;
    }

    template <typename T>
    ostream &operator<<(ostream &cout, vector<T> vec) {
        for (T i : vec)
            cout << i << ' ';
        return cout;
    }
}
using namespace io;

class SparseTable {
private:
    vector<vector<int>> st;
    vector<int> log;

public:
    SparseTable(const vector<int>& a) {
        int n = a.size();
        log.resize(n + 1);
        log[1] = 0;
        for (int i = 2; i <= n; ++i)
            log[i] = log[i / 2] + 1;

        int k = log[n];
        st.assign(n, vector<int>(k + 1));
        for (int i = 0; i < n; ++i)
            st[i][0] = a[i];

        for (int j = 1; j <= k; ++j) {
            for (int i = 0; i + (1 << j) <= n; ++i) {
                st[i][j] = max(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]);
            }
        }
    }

    int query(int l, int r) {
        int j = log[r - l + 1];
        return max(st[l][j], st[r - (1 << j) + 1][j]);
    }
};

vector<long long> fact(MAXN + 1), inv_fact(MAXN + 1);

ll power(ll base, ll exp) {
    ll res = 1;
    while (exp > 0) {
        if (exp % 2) {
            res = (res * base)%MOD;
        }
        base = (base * base)%MOD;
        exp /= 2;
    }
    return res%MOD;
}
void precompute(ll max_n) {
    fact[0] = 1;
    for (ll i = 1; i <= max_n; ++i) {
        fact[i] = fact[i - 1] * i % MOD;
    }
    inv_fact[max_n] = power(fact[max_n], MOD - 2);
    for (ll i = max_n - 1; i >= 0; --i) {
        inv_fact[i] = inv_fact[i + 1] * (i + 1) % MOD;
    }
}

long long binomial_coefficient(ll n, ll k) {
    if (k > n || k < 0) {
        return 0;
    }
    return fact[n] *inv_fact[k] % MOD * inv_fact[n - k] % MOD;
}

bool isprime(int m) {
    if (m <= 1) return false;
    for (int i = 2; i * i <= m; i++) {
        if (m % i == 0) return false;
    }
    return true;
}

int oaat(vi key, int len, int bits) {
    int hash = 0;
    for (int i = 0; i < len; i++) {
        hash += key[i];
        hash += (hash << 10);
        hash ^= (hash >> 6);
    }
    hash += (hash << 3);
    hash ^= (hash >> 11);
    hash += (hash << 15);
    return hash & hashmask(bits);
}

vector<int> z_function(string s) {
    int n = s.size();
    vector<int> z(n);
    int l = 0, r = 0;
    for (int i = 1; i < n; i++) {
        if (i < r) {
            z[i] = min(r - i, z[i - l]);
        }
        while (i + z[i] < n && s[z[i]] == s[i + z[i]]) {
            z[i]++;
        }
        if (i + z[i] > r) {
            l = i;
            r = i + z[i];
        }
    }
    return z;
}

int query(int a,int b,int k=0){
    cout<<"? "<<a<<" "<<b<<endl;
    cin>>k;
    return k;
}

void solve() {
    int n,m;
    cin>>n>>m;
    string v;

    if(m>=n){
        for(int i=0;i<max(n/2,1);i++){
            for(int j=0;j<m;j++){
                v+='-';
            }
            v+='\n';
        }
        for(int i=0;i<1 && n!=1;i++){
            for(int j=0;j<m;j++){
                v+='+';
            }
            v+='\n';
        }
        for(int i=0;i<n/2-(n%2==0);i++){
            for(int j=0;j<m;j++){
                v+='-';
            }
            v+='\n';
        }
    }
    else{
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(j==max(m/2,1)){
                    v+='-';
                    continue;
                }
                v+='+';
            }
            v+='\n';
        }
    }

    cout<<v;
    return;
}


int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    precompute(MAXN);
    int t=1;
    cin >> t;
    while (t--) {
        solve();
        cout << '\n';
    }
    return 0;
}
#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...