Submission #1368751

#TimeUsernameProblemLanguageResultExecution timeMemory
1368751eliRed-blue table (IZhO19_stones)C++20
17 / 100
8 ms1512 KiB
#include<bits/stdc++.h>
using namespace std;

#define endl "\n"
#define out(x) #x <<" = "<<x<<"; "
const long long MAX = 1e3 + 10;
int t;
char a[MAX][MAX];
int cnt[MAX];
int n, m;
int main(){
    /*ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);*/
    cin>>t;
    while(t --){
        cin>>n>>m;
        int anss = 0, nn = 0, mm = 0;
        for(int i = 0; i <= n; i++){
            //cout<<"Processing "<<out(i)<<endl;
            int l = 1, r = m, mid, ans = 0;

            while(l <= r){
                mid = (l + r)/2;
                int curr = i * (m/2 + 1 - m + mid);
                bool ok = false;
                if(curr <= 0) ok = true;
                //cout<<out(l)<<out(r)<<out(mid)<<out(curr);
                if(curr % mid != 0) curr = curr/ mid + 1;
                else curr /= mid;
                //cout<<out(curr)<<endl;
                if(curr < n/2 + n % 2 || ok){
                    l = mid + 1;
                    ans = mid;
                }else r = mid -1;
            }

            if(ans + i > anss){
                anss = ans + i;
                nn = i;
                mm = ans;
            }
        }

        cout<<anss<<endl;
        //cout<<out(nn)<<out(mm)<<endl;
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= m; j++){
                cnt[j] = 0;
                a[i][j] = '-';
            }
        }

        int br = nn * (m/2 + 1);
        for(int i = 1; i <= nn; i++){
            for(int j = 1; j <= m - mm; j++){
                if(br > 0){
                    a[i][j] = '+';
                    br--;
                }
            }
        }

        for(int i = 1; i <= nn; i++){
            int brrr = m - mm;
            for(int j = m - mm + 1; j <= m; j++){
                if(brrr >= m/2 + 1) break;
                if(br > 0 && cnt[j] < n/2 + n%2 - 1){
                    a[i][j] = '+';
                    br--;
                    cnt[j] ++;
                    brrr ++;
                }
                //cout<<a[i][j];
            }
            //cout<<endl;
        }
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= m; j++){
                //if(br > 0) a[i][j] = '+';
                cout<<a[i][j];
            }
            cout<<endl;
        }

    }
    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...