Pagini recente » Cod sursa (job #1645855) | Cod sursa (job #392113) | Cod sursa (job #748921) | Cod sursa (job #3233939) | Cod sursa (job #60908)
Cod sursa(job #60908)
#include <cstdio>
#define MAX 200001
#define max(a, b) (((a) > (b))?(a):(b))
FILE *in = fopen("buline.in","r"), *out = fopen("buline.out","w");
int n;
int a[MAX];
int s[MAX] = {0};
int t[MAX] = {0};
void read()
{
fscanf(in, "%d", &n);
int b = 0;
for ( int i = 1; i <= n; ++i )
{
fscanf(in, "%d %d", &a[i], &b);
if ( b == 0 )
a[i] *= -1;
s[i] = s[i-1] + a[i];
t[i] = max(t[i-1], s[i]);
}
}
int main()
{
read();
int best = t[1]+s[n]-s[1];
int p = 2;
int l = n-1;
for ( int i = 1; i <= n; ++i )
{
if ( t[i-1]+s[n]-s[i-1] > best )
{
best = t[i-1]+s[n]-s[i-1];
p = i;
l = i;
}
}
fprintf(out, "%d %d %d\n", best, p, l);
return 0;
}