이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
typedef long long int64;
using namespace std;
int n,m,k;
bool build (int i1, int j1, int i2, int j2, vector <vector <int> >& a, int k) {
int can = (i2 - i1 + 1) * (j2 - j1 + 1) / 4;
// cout << i1 << " " << j1 << " " << i2 << " " << j2 << " " << k << " " << can << "\n";
if (can == 0) return 0;
if (can > k) {
for (int j = j1; j <= j2; j++){
a[i1][j] = a[i2][j] = k;
}
for (int i = i1; i <= i2; i++){
a[i][j1] = a[i][j2] = k;
}
return build(i1 + 1, j1 + 1, i2 - 1, j2 - 1, a, k - 1);
}
else if (can == k){
for (int i = i1; i < i2; i+=2){
for (int j = j1; j < j2; j+=2){
a[i][j] = a[i][j+1] = a[i+1][j] = a[i+1][j+1] = k--;
}
}
return 1;
}
else return 0;
}
void solve() {
cin >> n >> m >> k;
if (n == m) {
if (n % 2 == 1) {
cout << "NO\n";
return;
}
vector <vector <int> > a (n, vector <int> (n));
if (build (0, 0, n - 1, n - 1, a, k)) {
cout << "YES\n";
for (auto i: a) {
for (auto j: i) {
cout << j << " ";
}
cout << "\n";
}
}
else {
cout << "NO\n";
}
}
else {
cout << "-NO\n";
}
}
int main() {
cin.tie(0); ios::sync_with_stdio(0);
int t;
cin >> t;
while (t--) solve();
}
# | 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... |