結果
| 問題 | No.883 ぬりえ |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-09-13 22:21:57 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,601 bytes |
| 記録 | |
| コンパイル時間 | 1,700 ms |
| コンパイル使用メモリ | 171,476 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-04 09:56:39 |
| 合計ジャッジ時間 | 3,725 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 13 WA * 3 RE * 3 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int calc(int n, int K, vector<int>& v) {
if (n <= 0) return 0;
if (n >= K * K) {
v.push_back(K);
return calc(n - K * K, K, v) + K;
}
int res = 1;
for (int i = 1; i <= K; i++) {
if (n <= i * i) {
res = i;
break;
}
}
v.push_back(res);
return calc(n - res * res, K, v) + res;
}
bool judge(vector<string>& ans, int n, int K) {
int m = ans.size();
for (int i = 0; i < m; i++) {
int tmp = 0;
for (int j = 0; j < m; j++) {
tmp += (ans[i][j] == '#');
}
if (tmp > K) return false;
}
int cnt = 0;
for (int j = 0; j < m; j++) {
int tmp = 0;
for (int i = 0; i < m; i++) {
tmp += (ans[i][j] == '#');
cnt += (ans[i][j] == '#');
}
if (tmp > K) return false;
}
return (cnt == n);
}
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
int n, K;
cin >> n >> K;
assert(K <= 10);
vector<int> v;
int m = calc(n, K, v);
cout << m << "\n";
vector<string> ans(m, string(m, '.'));
int rest = n;
int beg = 0;
for (int x : v) {
for (int i = beg; i < beg + x; i++) {
for (int j = beg; j < beg + x; j++) {
if (rest == 0) continue;
ans[i][j] = '#';
rest--;
}
}
beg += x;
}
for (int i = 0; i < m; i++) {
cout << ans[i] << "\n";
}
assert(judge(ans, n, K));
return 0;
}