Pagini recente » Cod sursa (job #659751) | Cod sursa (job #2868846) | Cod sursa (job #2535197) | Cod sursa (job #1661029) | Cod sursa (job #51589)
Cod sursa(job #51589)
#include <stdio.h>
#define in "buline.in"
#define out "buline.out"
#define dim 200001
#define maxim(a,b) a > b ? a : b
long long a[dim], s[dim], t[dim], k[dim];
int n, smax, i, j;
int main()
{
int b,c;
int ip, is;
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d",&n);
for ( i = 1; i <= n; i++ )
{
scanf("%d%d",&b,&c);
if ( c == 1 ) a[i] = b;
else a[i] = -b;
}
s[1] = a[1];
t[1] = a[1];
k[1] = 1;
for ( i = 2; i <= n; i++ )
{
s[i] = s[i-1] + a[i];
t[i] = maxim(t[i-1],s[i]);
if ( t[i-1] > s[i] ) k[i] = k[i-1];
else k[i] = i;
}
for ( i = 2; i <= n; i++ )
{
if ( smax < t[i-1]+s[n]-s[i-1] )
{
smax = t[i-1]+s[n]-s[i-1];
ip = i;
is = k[i];
}
}
printf("%d %d %d\n",smax,ip,is);
}