Please sign in first.
Submission #67085207
Source Code Expand
import * as fs from 'fs';
const input = fs.readFileSync('/dev/stdin', 'utf8').trim().split('\n');
const [H, W, K] = input[0].split(' ').map(Number);
const grid: string[][] = input.slice(1).map(line => line.split(''));
let maxBlack = 0;
for (let bit = 0; bit < (1 << H); bit++) {
const paintedRows: number[] = [];
for (let i = 0; i < H; i++) {
if ((bit >> i) & 1) paintedRows.push(i);
}
const rowPaintCount = paintedRows.length;
if (rowPaintCount > K) continue;
// 塗り操作のコピー
const painted: string[][] = grid.map(row => [...row]);
// 行を黒に塗る
for (const row of paintedRows) {
for (let j = 0; j < W; j++) {
painted[row][j] = '#';
}
}
// 各列の黒マス数
const blackCountPerCol: number[] = new Array(W).fill(0);
for (let j = 0; j < W; j++) {
for (let i = 0; i < H; i++) {
if (painted[i][j] === '#') {
blackCountPerCol[j]++;
}
}
}
// 残り操作回数で列を貪欲に選ぶ
const columnGain: [number, number][] = [];
for (let j = 0; j < W; j++) {
const gain = H - blackCountPerCol[j];
columnGain.push([gain, j]);
}
columnGain.sort((a, b) => b[0] - a[0]);
const columnsToPaint = new Set<number>();
const remainingCols = K - rowPaintCount;
for (let i = 0; i < Math.min(remainingCols, columnGain.length); i++) {
columnsToPaint.add(columnGain[i][1]);
}
// 黒マス合計を計算
let totalBlack = 0;
for (let i = 0; i < H; i++) {
for (let j = 0; j < W; j++) {
if (painted[i][j] === '#' || columnsToPaint.has(j)) {
totalBlack++;
}
}
}
maxBlack = Math.max(maxBlack, totalBlack);
}
console.log(maxBlack);
Submission Info
| Submission Time | |
|---|---|
| Task | A72 - Tile Painting |
| User | myoshizumi |
| Language | TypeScript 5.1 (Node.js 18.16.1) |
| Score | 1000 |
| Code Size | 1890 Byte |
| Status | AC |
| Exec Time | 95 ms |
| Memory | 49472 KiB |
Compile Error
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00 |
| All | 00_sample_00, 10_random_00, 10_random_01, 10_random_02, 10_random_03, 10_random_04, 10_random_05, 10_random_06, 10_random_07, 10_random_08, 10_random_09, 10_random_10, 10_random_11, 10_random_12, 10_random_13, 10_random_14, 20_max_00, 20_max_01, 20_max_02, 20_max_03, 20_max_04, 99_challenge_00 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00 | AC | 45 ms | 42780 KiB |
| 10_random_00 | AC | 40 ms | 42772 KiB |
| 10_random_01 | AC | 41 ms | 43152 KiB |
| 10_random_02 | AC | 41 ms | 43076 KiB |
| 10_random_03 | AC | 88 ms | 49260 KiB |
| 10_random_04 | AC | 39 ms | 42684 KiB |
| 10_random_05 | AC | 40 ms | 42768 KiB |
| 10_random_06 | AC | 40 ms | 42636 KiB |
| 10_random_07 | AC | 68 ms | 49212 KiB |
| 10_random_08 | AC | 70 ms | 49472 KiB |
| 10_random_09 | AC | 68 ms | 49396 KiB |
| 10_random_10 | AC | 40 ms | 42784 KiB |
| 10_random_11 | AC | 40 ms | 42760 KiB |
| 10_random_12 | AC | 77 ms | 46852 KiB |
| 10_random_13 | AC | 38 ms | 42636 KiB |
| 10_random_14 | AC | 65 ms | 47060 KiB |
| 20_max_00 | AC | 88 ms | 49256 KiB |
| 20_max_01 | AC | 56 ms | 49000 KiB |
| 20_max_02 | AC | 92 ms | 49260 KiB |
| 20_max_03 | AC | 95 ms | 49256 KiB |
| 20_max_04 | AC | 76 ms | 49320 KiB |
| 99_challenge_00 | AC | 39 ms | 42784 KiB |