Pagini recente » Cod sursa (job #2478817) | Cod sursa (job #2944455) | Cod sursa (job #1978135) | Cod sursa (job #429205) | Cod sursa (job #53065)
Cod sursa(job #53065)
#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 = 0;
p = i + 1;
l = 0;
/*
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);
}