记录编号 |
322267 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[福州培训2010] 最大和 |
最终得分 |
100 |
用户昵称 |
Sky_miner |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.026 s |
提交时间 |
2016-10-14 21:16:02 |
内存使用 |
0.28 MiB |
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <queue>
#include <algorithm>
#include <climits>
#include <cstring>
using namespace std;
typedef long long ll;
inline void read(int &x){
x=0;char ch;bool flag = false;
while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
inline ll cat_min(const ll &a,const ll &b){return a<b ?a:b;}
inline ll cat_max(const ll &a,const ll &b){return a>b ?a:b;}
const int maxn = 50010;
ll f,g,sum,ff,gg;
int main(){
freopen("maxsum.in","r",stdin);
freopen("maxsum.out","w",stdout);
int n;read(n);
for(int i=1,x;i<=n;++i){
read(x);
f = cat_max(f,0LL) + x;ff = cat_max(ff,f);
g = cat_min(g,0LL) + x;gg = cat_min(gg,g);
sum += x;
}
printf("%lld",cat_max(ff,sum - gg));
//getchar();getchar();
return 0;
}