[bzoj1811] [Ioi2005]mea

时间:2023-03-09 08:54:35
[bzoj1811] [Ioi2005]mea

  还是比较好想到的..设第一个数为x,那么以后的所有数都能用x和M表示出来。

  然后再根据非递减的限制条件得出x的取值范围。

 #include<cstdio>
#include<iostream>
#include<cstring>
#define ll long long
using namespace std;
const int maxn=;
int i,j,k,n,m; int ra;char rx;
inline int read(){
rx=getchar(),ra=;
while(rx<''||rx>'')rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra;
}
int main(){
ll sm,mx,mn;int pre,now;
n=read();pre=mn=sm=read(),mx=-(<<);
for(i=;i<=n&&mx<=mn;i++){
now=read();
if(i&)sm+=now-pre,mn=min(mn,sm);else sm+=pre-now,mx=max(mx,sm);
// printf(" %lld %lld sm:%lld\n",mx,mn,sm);
pre=now;
}
if(mx>mn)puts("");else printf("%lld\n",mn-mx+);
}