Asa's Website

D - Maximum Profit

cpaojalds1

最終更新日

Table of Contents

Loading...

問題

https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/1/ALDS1_1_D

問題文

RtR_t が与えられるので、 RjRi(j>i)R_j - R_i (j > i) の最大値を求めてね。

制約

サンプル

I/O 1

6 5 3 1 3 4 3
3

I/O 2

3 4 3 2
-1

考察

O(n2)O(n^2) でやると間に合わない。
RiR_i が最小なら RtRiR_t - R_i が最大になるので、RiR_i を更新しながら RtRiR_t - R_i を計算していけばいい。

コード

https://onlinejudge.u-aizu.ac.jp/status/users/a01sa01to/submissions/1/ALDS1_1_D/judge/6379628/C++17

int main() { int n; cin >> n; vector<int> a(n); rep(i, n) cin >> a[i]; int minim = a[0], ans = -1e9; rep(i, n - 1) { ans = max(ans, a[i + 1] - minim); minim = min(minim, a[i + 1]); } cout << ans << endl; return 0; }