Cod sursa(job #284577)
#include <stdio.h>
#define DIM 200005
int s[DIM];
int n,min,mi,lg,max,mini,max2,minii;
void read ()
{
int i,x,c;
scanf("%d",&n);
for (i=1; i<=n; ++i)
{
scanf("%d%d",&x,&c);
if (c==0) x=-x;
s[i]=s[i-1]+x;
}
}
void solve1 ()
{
int i;
for (i=1; i<=n; ++i)
{
if (s[i]-min>max)
{
max=s[i]-min;
mi=mini+1;
lg=i-mini;
}
if (s[i]<min)
{
min=s[i];
mini=i;
}
}
}
void solve2 ()
{
int i;
for (i=1; i<=n; ++i)
{
if (max2+s[n]-s[i-1]>max)
{
max=max2+s[n]-s[i-1];
mi=i;
lg=minii+n-i+1;
}
else if (max2+s[n]-s[i-1]==max)
lg=minii+n-i+1;
if (s[i]>max2)
{
max2=s[i];
minii=i;
}
}
}
int main()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
read ();
solve1 ();
solve2 ();
printf("%i %i %i\n",max,mi,lg);
fclose(stdin); fclose(stdout);
return 0;
}