Pagini recente » Cod sursa (job #183664) | Cod sursa (job #2484091) | Cod sursa (job #188933) | Cod sursa (job #2640969) | Cod sursa (job #26718)
Cod sursa(job #26718)
#include <cstdio>
using namespace std;
const char iname[] = "buline.in";
const char oname[] = "buline.out";
#define MAX_N 200005
int A[MAX_N], S[MAX_N], T[MAX_N];
int main(void) {
freopen(iname, "r", stdin);
int n;
int i;
int color;
for (scanf("%d", & n), i = 1; i <= n; ++ i) {
scanf("%d %d", A + i, & color);
if (color == 0)
A[i] = - A[i];
S[i] = S[i - 1] + A[i];
T[i] = T[i - 1];
if (T[i] < S[i])
T[i] = S[i];
}
int res = A[1];
int sum = 0;
for (i = 1; i <= n; ++ i) {
if (sum + A[i] > A[i])
sum = sum + A[i];
else
sum = A[i];
if (res < sum)
res = sum;
}
for (i = 1; i <= n; ++ i) {
if (res < S[n] - S[i] + T[i - 1])
res = S[n] - S[i] + T[i - 1];
}
freopen(oname, "w", stdout);
printf("%d 0 0\n", res);
return 0;
}