Pagini recente » Cod sursa (job #586733) | Cod sursa (job #2960998) | Cod sursa (job #2813838) | Cod sursa (job #2573595) | Cod sursa (job #1409351)
#include <cstdio>
using namespace std;
int v[400005];
int main()
{
freopen("buline.in", "r", stdin);
freopen("buline.out", "w", stdout);
int n, nr, c, s, st, l, smax, stmax, drmax, sum, smin, stmin, drmin, sans, stans, lans;
scanf("%d",&n);
sum = 0;
for (register int i = 0; i < n; ++i)
{
scanf("%d%d", &nr, &c);
if (c == 1)
v[i] = nr;
else
v[i] = -nr;
sum += v[i];
}
smax = s = v[0];
stmax = drmax = st = 0;
for (register int i = 1; i < n; ++i)
{
if (s < 0)
{
s = v[i];
st = i;
}
else
s += v[i];
if (s > smax)
{
smax = s;
stmax = st;
drmax = i;
}
}
smin = s = v[0];
stmin = drmin = st = 0;
for (register int i = 1; i < n; ++i)
{
if (s > 0)
{
s = v[i];
st = i;
}
else
s += v[i];
if (s < smin)
{
smin = s;
stmin = st;
drmin = i;
}
}
if (smax > sum - smin)
{
sans = smax;
stans = stmax;
lans = drmax - stmax + 1;
}
else
{
sans = sum - smin;
stans = (drmin + 1 ) % n;
lans = n - (drmin - stmin + 1);
}
printf ("%d %d %d\n", sans, stans + 1, lans);
return 0;
}