답안 #499877

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
499877 2021-12-29T21:39:45 Z lukameladze Red-blue table (IZhO19_stones) C++14
15 / 100
69 ms 3944 KB
# include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
using namespace std;
const int N = 1005;
int t,n,m,a[N][N],ans,rem,cur[N],canrow,val,val1,all;
signed main() {
    cin>>t;
    while (t--) {
        cin>>n>>m;
        ans = max(n,m);
        for (int i = 1; i <= n; i++) {
            all = i*((m+2)/2);
            canrow = min(n - (n+2)/2, i);
            for (int j = 0; j < m; j++) {
                if ((m-j)*canrow >= all) {
                    if (i + (m - j) > ans) {
                        val = i;
                        val1 = j;
                    }
                    ans = max(ans,i + (m - j));
                }
                all -= i;
            }
        }
        cout<<ans<<endl;
        if (ans == m) {
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <=m ;j++) {
                    cout<<"-";
                }
                cout<<"\n";
            }
            continue;
        }
        if (ans == n) {
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= m; j++) {
                    cout<<"+";
                }
            }
            cout<<"\n";
            continue;
        }
        for (int i = 1; i <= val; i++) {
            canrow = min(n-(n+2)/2,i);
            for (int j = 1; j <= val1; j++) {
                a[i][j] = 1;
            }
            rem = (m+2)/2;
            vector < pair <int, int > > v;
            v.clear();
            for (int j = 1; j <= m; j++) {
                v.pb({cur[j],j});
            }
            sort(v.begin(),v.end());
            
            for (int j = 0; j < rem; j++) {
                a[i][v[j].s] = 1;
                cur[v[j].s]++;
            }
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {cur[j] = 0;
                if (a[i][j] == 1) cout<<"+";
                else cout<<"-";
                a[i][j] = 0;
            }
            cout<<"\n";
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 0 ms 204 KB Wrong answer
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 460 KB Wrong answer
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 0 ms 204 KB Wrong answer
# 결과 실행 시간 메모리 Grader output
1 Incorrect 69 ms 1692 KB in the table A+B is not equal to 116
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 57 ms 1856 KB Output is correct
2 Correct 55 ms 3944 KB Output is correct
3 Correct 50 ms 3240 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 0 ms 204 KB Wrong answer