結果
| 問題 |
No.3129 Multiple of Twin Subarray
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-04-25 21:55:20 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,529 bytes |
| コンパイル時間 | 2,186 ms |
| コンパイル使用メモリ | 196,880 KB |
| 実行使用メモリ | 9,504 KB |
| 最終ジャッジ日時 | 2025-04-25 21:55:26 |
| 合計ジャッジ時間 | 4,768 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 26 WA * 20 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int N; cin >> N;
vector<long long> Akane(N);
for(auto &a : Akane) cin >> a;
if(N == 2){cout << Akane.at(0)*Akane.at(1) << endl; return 0;}
vector<long long> Aoi(N+1);
for(int i=1; i<=N; i++) Aoi.at(i) = Aoi.at(i-1)+Akane.at(i-1);
long long answer = 0,plus = 0,minus = 0;
for(auto a : Akane){
if(a == 0){answer = 0; continue;}
if(a > 0) plus++;
else minus++;
}
if(plus > 1){
vector<long long> L(N+1),R(N+1);
long long mina = 0;
for(int i=1; i<N; i++){
mina = min(mina,Aoi.at(i));
L.at(i) = Aoi.at(i)-mina;
}
long long maxa = R.at(N);
for(int i=N-1; i>0; i--){
maxa = max(maxa,Aoi.at(i));
R.at(i) = maxa-Aoi.at(i);
}
maxa = 0;
for(int i=1; i<N; i++) maxa = max(maxa,L.at(i)),answer = max(answer,maxa*R.at(i));
}
if(minus > 1){
vector<long long> L(N+1),R(N+1);
long long maxa = 0;
for(int i=1; i<N; i++){
maxa = max(maxa,Aoi.at(i));
L.at(i) = maxa-Aoi.at(i);
}
long long mina = R.at(N);
for(int i=N-1; i>0; i--){
mina = min(mina,Aoi.at(i));
R.at(i) = Aoi.at(i)-mina;
}
maxa = 0;
for(int i=1; i<N; i++) maxa = max(maxa,L.at(i)),answer = max(answer,maxa*R.at(i));
}
cout << answer << endl;
}