大佬们代码太奇妙了,思路大致明白了,就是不知道这个更新上下界是怎么想到和实现的原理。
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<set>
#include<unordered_map>
#define FAST ios::sync_with_stdio(false);
#define int long long
#define endl "\n"
#define rep(i,a,n) for(int i=a;i<=n;++i)
#define per(i,a,n) for(int i=n;i>=a;--i)
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int N = 1e6 + 10;
typedef pair<int, int>PII;
int a[N];
signed main()
{
FAST
int n;
cin >> n;
rep(i, 1, n)cin >> a[i];
int t = 0,up=INF,down=0;
rep(i, 1, n)
{
t = a[i] - t;
if (i % 2)up = min(up, t);
else down = max(down, -t);
}
if (up - down < 0||up<0||down<0)cout << 0 << endl;
else cout << up - down+1<<endl;
return 0;
}