結果
問題 | No.2094 Symmetry |
ユーザー | baLoon8128 |
提出日時 | 2022-10-07 21:45:14 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 147 ms / 2,000 ms |
コード長 | 1,018 bytes |
コンパイル時間 | 3,498 ms |
コンパイル使用メモリ | 232,260 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-12 06:49:14 |
合計ジャッジ時間 | 8,290 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 |
ソースコード
// #define _GLIBCXX_DEBUG #include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using vi = vector<int>; using vvi = vector<vector<int>>; using pii = pair<int, int>; #define rep(i, n) for (int i = 0; i < (int)(n); ++i) #define repr(i, n) for (int i = (int)(n - 1); i >= 0; --i) int main() { int n; ll K; cin >> n >> K; n *= 2; int cnt = 0; rep(i, n) rep(j, n) { char ch; cin >> ch; if (ch == '#') cnt++; } vvi c(n, vi(n)); rep(i, n) rep(j, n) cin >> c[i][j]; ll ret = 0; vi s; rep(i, n) rep(j, n) s.push_back(c[i][j]); sort(s.begin(), s.end(), greater<int>()); rep(k, cnt) ret += s[k]; if (~cnt & 1) { vi t; rep(i, n) rep(j, n / 2) t.push_back(c[i][j] + c[i][n - 1 - j]); sort(t.begin(), t.end(), greater<int>()); ll tmp = K; rep(k, cnt / 2) tmp += t[k]; ret = max(ret, tmp); } cout << ret << endl; return 0; }