Submission #991563

#TimeUsernameProblemLanguageResultExecution timeMemory
991563MardonbekhazratovRed-blue table (IZhO19_stones)C++17
100 / 100
64 ms2280 KiB
#include<bits/stdc++.h>
using namespace std;

void solve(){
    int n,m;
    cin>>n>>m;
    vector<string>a;
    if(n>=m){
        a.assign(n,string(m,'+'));
        vector<int>b(n,0);
        for(int i=0;i<m;i++){
            set<pair<int,int>>s;
            for(int j=0;j<n;j++) s.insert({b[j],j});
            for(int j=0;j<n/2+1;j++){
                auto x=*s.begin();
                s.erase(s.begin());
                if(x.first>=(m-1)/2) break;
                b[x.second]++;
                a[x.second][i]='-';
            }
        }
    }
    else{
        a.assign(n,string(m,'-'));
        vector<int>b(m,0);
        for(int i=0;i<n;i++){
            set<pair<int,int>>s;
            for(int j=0;j<m;j++) s.insert({b[j],j});
            for(int j=0;j<m/2+1;j++){
                auto x=*s.begin();
                s.erase(s.begin());
                if(x.first>=(n-1)/2) break;
                b[x.second]++;
                a[i][x.second]='+';
            }
        }
    }
    int ans=0;
    for(int i=0;i<n;i++){
        int c=0;
        for(int j=0;j<m;j++){
            if(a[i][j]=='+') c++;
        }
        if(c>m/2) ans++;
    }
    for(int i=0;i<m;i++){
        int c=0;
        for(int j=0;j<n;j++){
            if(a[j][i]=='-') c++;
        }
        if(c>n/2) ans++;
    }
    cout<<ans<<'\n';
    for(int i=0;i<n;i++){
        cout<<a[i]<<'\n';
    }
}

signed main(){
    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...