# 14279: 【原4279】Stock Manager

### 题目描述

author: Jarvis 原OJ链接：https://acm.sjtu.edu.cn/OnlineJudge-old/problem/4279

## Description

Say you have an array of stock prices, in which the i-th element is the price on day i.

Design a strategy of stock transactions to gain the maximum profit. A complete transaction includes buying and selling one share of the stock. The number of transactions in unlimited.

Note that you must sell the stock you hold before you buy again.

## Input Format

Two lines. The first line is an integer, which is the number of prices (days). The second line is an array, which contains the stock prices.

## Output Format

One integer. The maximum profit.

## Sample Input

``````6
7 1 5 3 6 4
``````

## Sample Output

``````7
``````

## zqy2018's solution

``````/*
See the solution at https://github.com/zqy1018/sjtu_oj_solutions/blob/master/solutions/cs222quiz_2019.md
*/
#include <bits/stdc++.h>
#define INF 2000000000
using namespace std;
typedef long long ll;
int f = 1, x = 0;
char c = getchar();
while(c < '0' || c > '9'){if(c == '-') f = -f; c = getchar();}
while(c >= '0' && c <= '9')x = x * 10 + c - '0', c = getchar();
return f * x;
}
int n, a;
int f = {0}, g = {0};
void init(){
for (int i = 1; i <= n; ++i)
}
void solve(){
int maxi = -a;
for (int i = 2; i <= n; ++i){
f[i] = a[i] + maxi;
g[i] = max(g[i - 1], f[i]);
maxi = max(maxi, g[i - 1] - a[i]);
}
printf("%d\n", g[n]);
}
int main(){
init();
solve();
return 0;
}
``````