Cod sursa(job #5562)

Utilizator vlad_DVlad Dumitriu vlad_D Data 13 ianuarie 2007 10:47:17
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
int S1[1001007], S2[1001007];
int b_min, b_max;
int n, i, j;
int main() {
	freopen("2sec.in", "r", stdin);
	freopen("2sec.out", "w", stdout);
	scanf("%d", &n);	
	for (i=1; i<=n; i++) 
		scanf("%d", &S1[i]);	
	for (i=n; i>=1; i--) S2[i] = S1[i] + S2[i+1];
	for (i=1; i<=n; i++) S1[i]+=S1[i-1];
	for (i=1; i<=n; i++) {
		int cat = S1[i] - b_max;
		if (S1[i] > b_max) b_max = S1[i];
		S1[i] = cat;
	}
	for (i=n; i>=1; i--) {
		int cat = S2[i] - b_min;
		if (S2[i] < b_min) b_min = S2[i];
		S2[i] = cat;
	}
	for (i=2; i<=n; i++) if (S1[i-1] < S1[i] ) S1[i] = S1[i-1];
	for (i=n-1; i>=1; i--) if (S2[i+1] > S2[i+1]) S2[i] = S2[i+1];
	b_max = 0;
	for (i=1; i<n; i++) {
		if (i == 1) b_max = S2[i+1] - S1[i];
		if (S2[i+1] - S1[i] > b_max) b_max = S2[i+1] - S1[i];
		} 
	printf("%d\n", b_max);
	return 0;
}