A27706. 邮票交易(trading)
填空题
中等
知识点
题目描述
邮票交易(trading)
题目描述
四牌楼青云楼有一个邮票交易市场。给定某一枚邮票连续N天的价格,如果只允许交易一次,即先买入一次,后卖出一次。求最大的利益。没有合适的买入和卖出时机的话,可以不交易,大不了收益为0,也不能做亏本的买卖。低买高卖是交易的原则。
输入格式
第一行一个整数N。
第二行,N个整数,依次表示第1天~第N天的邮票价格。
输出格式
一个整数,意义如题所述。
输入输出样列
输入样例1
5
7 1 5 6 4
输出样例1
5
输入样例2
5
5 4 3 2 2
输出样例2
0
说明
1<=N<=1000000
参考答案
#include <bits/stdc++.h>
#define FOR(i, a, b) for(int i = a; i <= b; i ++ )
#define DOR(i, a, b) for(int i = b; i >= a; i -- )
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int N = 1e6 + 10;
int a[N], n, mins, maxs, c;
int main () {
cin >> n;
if (n < 2) { cout << 0; return 0; }
for (int i = 1; i <= n; i ++ ) cin >> a[i];
mins = a[1], maxs = a[2] - a[1];
for (int i = 3; i <= n; i ++ ) {
if (a[i - 1] < mins) mins = a[i - 1];
c = a[i] - mins;
maxs = max (maxs, c);
}
cout << max (0, maxs);
return 0;
}
上一题
下一题