Pagini recente » Cod sursa (job #626964) | Cod sursa (job #1039306) | Cod sursa (job #750916) | Cod sursa (job #2284700) | Cod sursa (job #26117)
Cod sursa(job #26117)
#include <stdio.h>
#define FIN "buline.in"
#define FOUT "buline.out"
#define MAX 200001
#define inf 0x3f3f3f
long A[MAX], S[MAX], T[MAX];
long N;
long Max = -inf, P=inf, L = inf;
int main() {
long i, x;
freopen(FIN, "r", stdin);
scanf("%ld", &N);
long Sum = 0;
S[0] = 0; T[0] = -inf;
for (i=1; i<=N; ++i) {
scanf("%ld %ld", A+i, &x);
if ( x==0 )
A[i] *= -1;
S[i] = S[i-1] + A[i];
T[i] = ( T[i-1] > S[i] ) ? T[i-1] : S[i];
Sum = ( Sum + A[i] > A[i] ) ? Sum+A[i] : A[i];
if ( Max < Sum ) {
Max = Sum;
}
}
fclose(stdin);
for (i=2; i<=N; ++i)
if ( Max < S[N] - S[i-1] + T[i-1] )
Max = S[N] - S[i-1] + T[i-1];
freopen(FOUT, "w", stdout);
printf("%ld %ld %ld\n", Max, P, L);
fclose(stdout);
return 0;
}