Pagini recente » Cod sursa (job #1174149) | Cod sursa (job #2196410) | Cod sursa (job #865022) | Cod sursa (job #1865479) | Cod sursa (job #53062)
Cod sursa(job #53062)
#include <cstdio>
void get_data();
void dynamics();
void print();
#define dim 400001
int A[dim];
int N;
long S;
long P, L;
int main()
{
get_data();
dynamics();
print();
return 0;
}
void get_data()
{
freopen("buline.in", "r", stdin);
long i;
int code;
for(scanf("%d", &N), i=1; i<=N; ++i)
{
scanf("%d %d", A+i, &code);
A[i] *= !code ? -1 : 1;
A[i+N] = A[i];
}
fclose(stdin);
}
void dynamics()
{
long i;
long s, p, l;
s = 0;
p = 1;
l = 0;
S = A[1] - 1;
for(i=1; i<=N<<1; ++i)
{
s += A[i];
++ l;
if(s > S)
{
S = s;
L = l;
P = p;
}
if(s < 0)
{
s = 0;
l = 0;
p = i + 1;
}
/* if(l == N)
{
s -= A[p];
++ p;
-- l;
if(s > S)
{
S = s;
P = p;
L = l;
}
}
*/
}
}
void print()
{
freopen("buline.out", "w", stdout);
if(P > N) P -= N;
printf("%ld %ld %ld", S, P, L);
fclose(stdout);
}