結果
問題 | No.2509 Beam Shateki |
ユーザー | kotatsugame |
提出日時 | 2023-10-20 21:30:54 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 919 ms / 2,000 ms |
コード長 | 1,146 bytes |
コンパイル時間 | 572 ms |
コンパイル使用メモリ | 72,192 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-20 17:31:01 |
合計ジャッジ時間 | 26,249 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 61 |
ソースコード
#include<iostream> #include<vector> #include<cassert> using namespace std; int H,W; int A[100][100]; int vis[100][100]; int d[3]={0,1,-1}; void f(pair<int,int>z,int dr,vector<pair<int,int> >&now) { int dx=d[dr/3],dy=d[dr%3]; int x=z.first,y=z.second; do{ x+=dx,y+=dy; if(0<=x&&x<H&&0<=y&&y<W)now.push_back(make_pair(x,y)); else break; }while(true); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>H>>W; for(int i=0;i<H;i++)for(int j=0;j<W;j++)cin>>A[i][j]; vector<pair<int,int> >OUT; for(int i=-1;i<=H;i++) { OUT.push_back(make_pair(i,-1)); OUT.push_back(make_pair(i,W)); } for(int j=0;j<W;j++) { OUT.push_back(make_pair(-1,j)); OUT.push_back(make_pair(H,j)); } vector<pair<int,int> >now; int visT=0; int ans=0; for(int P=0;P<OUT.size();P++)for(int Q=P+1;Q<OUT.size();Q++) { for(int p=1;p<9;p++)for(int q=1;q<9;q++) { now.clear(); f(OUT[P],p,now); f(OUT[Q],q,now); visT++; int ret=0; for(pair<int,int>z:now) { int x=z.first,y=z.second; if(vis[x][y]<visT) { vis[x][y]=visT; ret+=A[x][y]; } } ans=max(ans,ret); } } cout<<ans<<endl; }