結果
| 問題 |
No.459 C-VS for yukicoder
|
| コンテスト | |
| ユーザー |
くれちー
|
| 提出日時 | 2016-12-10 23:59:26 |
| 言語 | C90 (gcc 12.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,134 bytes |
| コンパイル時間 | 365 ms |
| コンパイル使用メモリ | 25,172 KB |
| 実行使用メモリ | 26,416 KB |
| 最終ジャッジ日時 | 2024-11-29 02:21:58 |
| 合計ジャッジ時間 | 79,897 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | TLE * 3 |
| other | AC * 2 WA * 1 RE * 38 TLE * 17 |
コンパイルメッセージ
main.c: In function ‘main’:
main.c:45:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
45 | scanf("%d %d %d", &h, &w, &n);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.c:48:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
48 | scanf("%s", s);
| ^~~~~~~~~~~~~~
main.c:55:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
55 | scanf("%d", &c);
| ^~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int getrand(int min, int max) {
static int f = 1;
if (f) {
srand((unsigned int)time(NULL));
f = 0;
}
return min + (int)(rand() * (max - min + 1.0) / (1.0 + RAND_MAX));
}
int sum(int *d, int size) {
int i, s = 0;
for (i = 0; i < size; i++) s += d[i];
return s;
}
int sum_(int *d, int size) {
int i, s = 0;
for (i = 0; i < size; i++)
if (d[i] != -1) s += d[i];
return s;
}
int check(int list[][1000], int *list2, int n, int w) {
int s, i, j;
for (i = 0; i < n; i++) {
s = 0;
for (j = 0; j < w; j++) s += list[i][j];
if (s != list2[i]) return 0;
}
return 1;
}
int main() {
int h, w, n, c, i, j, k;
static char s[1000];
static int state[1000] = {};
static int ctate[1000] = {};
static int clist[3000][1000] = {};
static int clist_[3000][1000] = {};
scanf("%d %d %d", &h, &w, &n);
for (i = 0; i < h; i++) {
scanf("%s", s);
for (j = 0; j < w; j++) {
if (s[j] == '#') state[j]++;
}
}
for (i = 0; i < n; i++) {
scanf("%d", &c);
for (j = c; j < c + 3; j++) ctate[j]++;
for (j = 0; j < c; j++) clist[i][j] = -1;
for (j = c + 3; j < w; j++) clist[i][j] = -1;
}
for (i = 0; i < w; i++) {
if (ctate[i] == 1) {
for (j = 0; j < n; j++) {
if (clist[j][i] != -1) {
clist[j][i] = state[i];
break;
}
}
}
}
while (!check(clist_, state, n, w)) {
for (i = 0; i < n; i++)
for (j = 0; j < w; j++)
clist_[i][j] = clist[i][j];
for (i = 0; i < w; i++) {
int tmp[30000];
for (j = 0; j < n; j++) {
if (clist_[j][i] == -1) {
tmp[j] = -1;
continue;
}
tmp[j] = getrand(0, 3);
if (sum_(tmp, n) > state[i]) j--;
}
if (sum_(tmp, n) != state[i]) i--;
else for (j = 0; j < n; j++) clist_[j][i] = tmp[j];
}
}
for (i = 0; i < n; i++)
for (j = 0; j < w; j++)
clist[i][j] = clist_[i][j];
for (i = 0; i < n; i++) {
int t = 0;
while (clist[i][t] == -1) t++;
for (j = 0; j < 3; j++) {
for (k = 0; k < 3; k++) {
if (clist[i][t + k] > 0) {
printf("#");
clist[i][t + k]--;
}
else printf(".");
}
printf("\n");
}
}
return 0;
}
くれちー