結果
問題 |
No.2094 Symmetry
|
ユーザー |
![]() |
提出日時 | 2024-01-15 17:36:10 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 71 ms / 2,000 ms |
コード長 | 1,269 bytes |
コンパイル時間 | 2,976 ms |
コンパイル使用メモリ | 205,320 KB |
最終ジャッジ日時 | 2025-02-18 20:13:08 |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 |
ソースコード
#include <bits/stdc++.h> using namespace std; void fast_io() { ios::sync_with_stdio(false); std::cin.tie(nullptr); } int main() { fast_io(); int n; long long k; cin >> n >> k; vector<string> s(2 * n); int cnt = 0; for (int i = 0; i < 2 * n; i++) { cin >> s[i]; for (char c : s[i]) { cnt += c == '#'; } } vector<vector<long long>> c(2 * n, vector<long long>(2 * n)); for (int i = 0; i < 2 * n; i++) { for (int j = 0; j < 2 * n; j++) { cin >> c[i][j]; } } vector<long long> vals, vals_sym; for (int i = 0; i < 2 * n; i++) { for (int j = 0; j < 2 * n; j++) { vals.push_back(c[i][j]); } } for (int i = 0; i < 2 * n; i++) { for (int j = 0; j < n; j++) { vals_sym.push_back(c[i][j] + c[i][2 * n - j - 1]); } } sort(vals.rbegin(), vals.rend()); sort(vals_sym.rbegin(), vals_sym.rend()); long long ans = 0; for (int i = 0; i < cnt; i++) { ans += vals[i]; } if (cnt % 2 == 0) { long long tmp = k; for (int i = 0; i < cnt / 2; i++) { tmp += vals_sym[i]; } ans = max(ans, tmp); } cout << ans << endl; }