結果
| 問題 |
No.2094 Symmetry
|
| コンテスト | |
| ユーザー |
chro_96
|
| 提出日時 | 2022-10-07 21:58:45 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 90 ms / 2,000 ms |
| コード長 | 1,348 bytes |
| コンパイル時間 | 674 ms |
| コンパイル使用メモリ | 31,488 KB |
| 実行使用メモリ | 8,928 KB |
| 最終ジャッジ日時 | 2024-06-12 07:16:42 |
| 合計ジャッジ時間 | 4,092 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 34 |
ソースコード
#include <stdio.h>
#include <stdlib.h>
int cmp_ll_rev (const void *ap, const void *bp) {
long long a = *(long long *)ap;
long long b = *(long long *)bp;
if (a < b) {
return 1;
}
if (a > b) {
return -1;
}
return 0;
}
int main () {
int n = 0;
long long k = 0LL;
char s[500][501] = {};
long long c[500][500] = {};
int res = 0;
int bcnt = 0;
long long c_sort[250000] = {};
long long cp_sort[125000] = {};
long long ans = 0LL;
res = scanf("%d", &n);
res = scanf("%lld", &k);
for (int i = 0; i < 2*n; i++) {
res = scanf("%s", s[i]);
}
for (int i = 0; i < 2*n; i++) {
for (int j = 0; j < 2*n; j++) {
res = scanf("%lld", c[i]+j);
c_sort[2*n*i+j] = c[i][j];
if (j >= n) {
cp_sort[n*i+j-n] = c[i][j]+c[i][2*n-j-1];
}
}
}
for (int i = 0; i < 2*n; i++) {
for (int j = 0; j < 2*n; j++) {
if (s[i][j] == '#') {
bcnt++;
}
}
}
qsort(c_sort, 4*n*n, sizeof(long long), cmp_ll_rev);
qsort(cp_sort, 2*n*n, sizeof(long long), cmp_ll_rev);
for (int i = 0; i < bcnt; i++) {
ans += c_sort[i];
}
if (bcnt%2 == 0) {
long long tmp = k;
for (int i = 0; i < bcnt/2; i++) {
tmp += cp_sort[i];
}
if (tmp > ans) {
ans = tmp;
}
}
printf("%lld\n", ans);
return 0;
}
chro_96