結果
| 問題 | No.3760 Streaming Schedule |
| コンテスト | |
| ユーザー |
tau1235
|
| 提出日時 | 2026-10-09 21:55:46 |
| 言語 | C++23 (gcc 15.3.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 140 ms / 2,000 ms |
| + 184µs | |
| コード長 | 626 bytes |
| 記録 | |
| コンパイル時間 | 2,056 ms |
| コンパイル使用メモリ | 341,216 KB |
| 実行使用メモリ | 25,696 KB |
| 最終ジャッジ日時 | 2026-10-09 21:55:56 |
| 合計ジャッジ時間 | 6,798 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge5_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 47 |
ソースコード
#include<bits/stdc++.h>
#include<atcoder/segtree.hpp>
using namespace std;
using ll=long long;
ll inf=1e18;
ll op(ll a,ll b){return max(a,b);}
ll e(){return -inf;}
int main(){
int n,b,c;
cin>>n>>b>>c;
vector<int> a(n);
vector<ll> sum(n+1);
for (int i=0;i<n;i++) cin>>a[i],sum[i+1]=sum[i]+a[i];
atcoder::segtree<ll,op,e> seg1(n+1),seg2(n+1);
seg1.set(0,0);
for (int i=1;i<=n;i++){
ll p1=seg2.prod(max(0,i-b+1),i);
ll p2=seg1.prod(max(0,i-c+1),i);
if (i<b) p1=max(p1,0LL);
seg1.set(i,p1-sum[i]);
seg2.set(i,p2+sum[i]);
}
ll ans=max(seg1.get(n)+sum[n],seg2.get(n));
cout<<ans<<endl;
}
tau1235