結果
| 問題 | No.2094 Symmetry |
| コンテスト | |
| ユーザー |
AngrySadEight
|
| 提出日時 | 2022-10-01 02:18:29 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 189 ms / 2,000 ms |
| コード長 | 1,405 bytes |
| 記録 | |
| コンパイル時間 | 1,020 ms |
| コンパイル使用メモリ | 84,872 KB |
| 最終ジャッジ日時 | 2025-02-07 19:54:10 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 34 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
int main(){
int N;
ll K;
cin >> N >> K;
vector<string> S(2 * N);
for (int i = 0; i < 2 * N; i++) cin >> S[i];
vector<vector<ll>> C(2 * N, vector<ll>(2 * N));
for (int i = 0; i < 2 * N; i++){
for (int j = 0; j < 2 * N; j++){
cin >> C[i][j];
}
}
int bk_count = 0;
for (int i = 0; i < 2 * N; i++){
for (int j = 0; j < 2 * N; j++){
if (S[i][j] == '#'){
bk_count++;
}
}
}
vector<ll> vec1(0);
for (int i = 0; i < 2 * N; i++){
for (int j = 0; j < 2 * N; j++){
vec1.push_back(C[i][j]);
}
}
sort(vec1.begin(), vec1.end());
reverse(vec1.begin(), vec1.end());
ll ans1 = 0;
for (int i = 0; i < bk_count; i++){
ans1 += vec1[i];
}
if (bk_count % 2 != 0){
cout << ans1 << endl;
return 0;
}
vector<ll> vec2(0);
for (int i = 0; i < 2 * N; i++){
for (int j = 0; j < N; j++){
vec2.push_back(C[i][j] + C[i][2 * N - 1 - j]);
}
}
sort(vec2.begin(), vec2.end());
reverse(vec2.begin(), vec2.end());
ll ans2 = 0;
for (int i = 0; i < bk_count / 2; i++){
ans2 += vec2[i];
}
cout << max(ans1, ans2 + K) << endl;
return 0;
}
AngrySadEight