Pagini recente » Cod sursa (job #640942) | Cod sursa (job #1382274) | Cod sursa (job #163058) | Cod sursa (job #1748871) | Cod sursa (job #185747)
Cod sursa(job #185747)
#include <stdio.h>
#define NM 400002
int n, i, j, k, h;
int s[NM], a[NM], pos[NM];
int p, u, smax, st, dr, stot;
int main()
{
freopen("buline.in", "r", stdin);
freopen("buline.out", "w", stdout);
scanf("%d", &n);
for ( i = 1; i <= n; i++ )
scanf("%d %d", &a[i], &j),
a[i] = (j == 0 ? -a[i] : a[i]),
a[i+n] = a[i],
stot += a[i];
p = u = 1, smax = a[1];
for ( i = 1; i <= 2*n; i++ )
{
if ( s[i-1] <= 0 ) s[i] = a[i], pos[i] = i;
else s[i] = s[i-1] + a[i], pos[i] = pos[i-1];
if ( smax < s[i] && i-pos[i]+1 <= n ) smax = s[i], p = pos[i], u = i-pos[i]+1;
}
if ( 2*stot == smax ) smax = stot, p = 1, u = n;
printf("%d %d %d\n", smax, p, u);
return 0;
}