結果
問題 |
No.2094 Symmetry
|
ユーザー |
👑 |
提出日時 | 2022-12-30 11:11:26 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 158 ms / 2,000 ms |
コード長 | 986 bytes |
コンパイル時間 | 1,073 ms |
コンパイル使用メモリ | 82,840 KB |
最終ジャッジ日時 | 2025-02-09 22:04:05 |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 |
ソースコード
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(){ long long n,k;cin>>n>>k; int b = 0; for(int i = 0; 2*n > i; i++){ for(int j = 0; 2*n > j; j++){ char c;cin>>c; if(c == '#')b++; } } if(b == 0){ cout << k << endl; return 0; } vector<vector<long long>> A(2*n,vector<long long>(2*n)); vector<long long> B; for(int i = 0; 2*n > i; i++){ for(int j = 0; 2*n > j; j++){ cin>>A[i][j]; B.push_back(A[i][j]); } } sort(B.begin(),B.end(),greater<long long>()); long long ans = 0; for(int i = 0; b > i; i++){ ans += B[i]; } if(b%2 == 0){ long long tmp = k; vector<long long> C; for(int i = 0; 2*n > i; i++){ for(int j = 0; n > j; j++){ C.push_back(A[i][j]+A[i][2*n-j-1]); } } sort(C.begin(),C.end(),greater<long long>()); for(int i = 0; b/2 > i; i++){ tmp += C[i]; } ans = max(ans,tmp); } cout << ans << endl; }