結果
| 問題 |
No.2094 Symmetry
|
| コンテスト | |
| ユーザー |
沙耶花
|
| 提出日時 | 2022-10-07 21:32:46 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 167 ms / 2,000 ms |
| コード長 | 1,124 bytes |
| コンパイル時間 | 4,412 ms |
| コンパイル使用メモリ | 259,472 KB |
| 最終ジャッジ日時 | 2025-02-07 22:54:55 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 34 |
ソースコード
#include <stdio.h>
#include <atcoder/all>
#include <bits/stdc++.h>
using namespace std;
using namespace atcoder;
using mint = modint998244353;
#define rep(i,n) for (int i = 0; i < (n); ++i)
#define Inf32 1000000001
#define Inf64 4000000000000000001
int main(){
long long n,k;
cin>>n>>k;
n *= 2;
vector<string> s(n);
rep(i,n)cin>>s[i];
long long w = 0;
rep(i,n){
rep(j,n){
if(s[i][j]=='.')w++;
}
}
vector c(n,vector<long long>(n));
rep(i,n){
rep(j,n)cin>>c[i][j];
}
long long ans = -Inf64;
{
long long t = 0;
vector<long long> diff;
rep(i,n){
rep(j,n/2){
t += c[i][j];
diff.push_back(-c[i][j]);
t += c[i][n-1-j];
diff.push_back(-c[i][n-1-j]);
}
}
sort(diff.rbegin(),diff.rend());
rep(i,w)t += diff[i];
ans = max(ans,t);
// cout<<ans<<endl;
}
{
long long t = 0;
vector<long long> diff;
rep(i,n){
rep(j,n/2){
t += c[i][j] + c[i][n-1-j];
diff.push_back(-(c[i][j]+c[i][n-1-j]));
}
}
sort(diff.rbegin(),diff.rend());
if(w%2==0){
rep(j,w/2){
t += diff[j];
}
ans = max(ans,t+k);
}
}
cout<<ans<<endl;
return 0;
}
沙耶花