class Solution {
public:
int maxProfit(vector<int>& prices) {
int L = prices.size();
if(L == 0) return 0;
vector<int> Min,Max;
Min.reserve(L);
Max.reserve(L);
Min[0] = prices[0];
Max[L-1] = prices[L-1];
for(int i=L-2;i>=0;i--) Max[i] = max(Max[i+1],prices[i]);
for(int i=1;i<L;i++) Min[i] = min(Min[i-1],prices[i]);
int ans = 0;
for(int i=0;i<L;i++) ans = max(ans,Max[i] - Min[i]);
return ans;
}
};