이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define int ll
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<double> vd;
typedef vector<bool> vb;
typedef vector<char> vc;
typedef vector<string> vs;
typedef vector<pi> vp;
typedef vector<pl> vpl;
void solve(int n, int m){
int k = 0;
if (n > m)
k = 1;
vector<vi> a(n, vi(m, k));
if (n>m){
for (int j = 0; j < (m-1)/2; ++j){
for (int i = 0; i < n/2 + 1; ++i){
a[i][j] = 0;
}
}
} else {
for (int i = 0; i < (n-1)/2; ++i){
for (int j = 0; j < m/2 + 1; ++j){
a[i][j] = 1;
}
}
}
int sol = 0;
for (int i = 0; i < n; ++i){
int x = 0;
for (int j = 0; j < m; ++j){
x += a[i][j];
}
if (x > m/2)
++sol;
}
for (int j = 0; j < m; ++j){
int x = 0;
for (int i = 0; i < n; ++i){
x += 1 - a[i][j];
}
if (x > n/2)
++sol;
}
cout << sol << '\n';
for (int i = 0; i < n; ++i){
for (int j = 0; j < m; ++j){
if (a[i][j])
cout << "+";
else
cout << "-";
}
cout << '\n';
}
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cerr.tie(nullptr);
int t;
cin >> t;
for (int e = 0; e < t; ++e){
int n, m;
cin >> n >> m;
if (n <= 4 || m <= 4){
solve(n, m);
continue;
}
if (n == 6 && m == 6){
cout << "9\n";
for (int i = 0; i < 3; ++i){
for (int j = 0; j < 6; ++j)
cout << "-";
cout << '\n';
}
cout << "-+-+++\n";
cout << "+-++-+\n";
cout << "+++-+-\n";
continue;
}
int l,r;
if (n%2){
l = r = n/2;
} else {
l = n/2-1; r = n/2;
}
vector<vi> a(n, vi(m, -1));
for (int j = 0; j < m; ++j){
a[l][j] = a[r][j] = 0;
}
if (m%2)
l = r = m/2;
else{
l = m/2-1; r = m/2;
}
for (int i = 0; i < n; ++i){
a[i][l] = a[i][r] = 1;
}
for (int i = 0; i < n/2; ++i){
for (int j = 0; j < m/2; ++j){
if (a[i][j] != -1) continue;
a[i][j] = 1;
}
}
for (int i = 0; i < n/2; ++i){
for (int j = m/2; j < m; ++j){
if (a[i][j] != -1) continue;
a[i][j] = 0;
}
}
for (int i = n/2; i < n; ++i){
for (int j = 0; j < m/2; ++j){
if (a[i][j] != -1) continue;
a[i][j] = 0;
}
}
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
if (a[i][j] == -1)
a[i][j] = 1;
int sol = 0;
for (int i = 0; i < n; ++i){
int x = 0;
for (int j = 0; j < m; ++j){
x += a[i][j];
}
if (x > m/2){
++sol;
}
}
for (int j = 0; j < m; ++j){
int x = 0;
for (int i = 0; i < n; ++i){
x += 1 - a[i][j];
}
if (x > n/2)
++sol;
}
cout << sol << '\n';
for (int i = 0; i < n; ++i){
for (int j = 0; j < m; ++j)
if (a[i][j])
cout << "+";
else
cout << "-";
cout << '\n';
}
}
}
컴파일 시 표준 에러 (stderr) 메시지
stones.cpp: In function 'int main()':
stones.cpp:174:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
174 | for (int j = 0; j < m; ++j)
| ^~~
stones.cpp:179:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
179 | cout << '\n';
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |