結果
問題 | No.2694 The Early Bird Catches The Worm |
ユーザー |
![]() |
提出日時 | 2024-03-22 21:53:17 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 65 ms / 2,000 ms |
コード長 | 975 bytes |
コンパイル時間 | 2,095 ms |
コンパイル使用メモリ | 202,612 KB |
実行使用メモリ | 11,136 KB |
最終ジャッジ日時 | 2024-09-30 11:22:07 |
合計ジャッジ時間 | 7,005 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 72 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll = long long;int main(){cin.tie(nullptr);ios_base::sync_with_stdio(false);ll N, H, ans=0;cin >> N >> H;vector<ll> A(N+1), B(N+1), SA(N+1), SB(N+1), SC(N+1);for (int i=1; i<=N; i++){cin >> A[i];SA[i] = SA[i-1] + A[i];}for (int i=1; i<=N; i++){cin >> B[i];SB[i] = SB[i-1] + B[i];SC[i] = SC[i-1] + B[i]*i;}for (int i=1; i<=N; i++){if (B[i] > H) continue;ll ok=i, ng=N+1;while (ng-ok > 1){ll mid = (ok+ng)/2;if (SC[mid] - SC[i-1] - (SB[mid]-SB[i-1]) * (i-1) <= H){ok = mid;} else {ng = mid;}}//cout << i << " " << ok << " " << SC[ok] - SC[i-1] - (SB[ok]-SB[i-1]) *(i-1) << " " << SA[ok]-SA[i-1] << endl;ans = max(ans, SA[ok]-SA[i-1]);}cout << ans << endl;return 0;}