結果
問題 | No.1375 Divide and Update |
ユーザー |
|
提出日時 | 2021-02-05 23:19:52 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 434 ms / 2,000 ms |
コード長 | 739 bytes |
コンパイル時間 | 2,476 ms |
コンパイル使用メモリ | 196,352 KB |
最終ジャッジ日時 | 2025-01-18 13:05:43 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 19 |
ソースコード
#include<bits/stdc++.h> //#include<atcoder/all> //using namespace atcoder; using namespace std; using ll = long long; int main(){ ll n,x,y; cin >> n >> x >> y; vector<ll> a(n); for(auto &i:a)cin >> i; vector<ll> ans(n); for(int i = 0;i<2;i++){ vector<ll> b = a; for(auto &i:b) i = x-i; int l = 0,r = 1; vector<ll> bsum(n+1,0); for(int i = 0;i<n;i++)bsum[i+1] = b[i] + bsum[i]; ll mn = 0; ll now = bsum[1]; for(int i = 1;i<n-1;i++){ now = max(now,bsum[i]-mn); ans[i] += now; mn = min(bsum[i],mn); } reverse(ans.begin(),ans.end()); reverse(a.begin(),a.end()); swap(x,y); } ll sum = 0; for(auto &i:a)sum += i; //reverse(ans.begin(),ans.end()); for(int i = 1;i<n-1;i++)cout<<sum+ans[i]<<endl; }