Pagini recente » Cod sursa (job #1886083) | Cod sursa (job #2906343) | Cod sursa (job #950325) | Cod sursa (job #2515770) | Cod sursa (job #2693903)
#include <stdio.h>
#define MAX_N 200000
int v[MAX_N], semn[2] = { -1, 1 };
int main() {
FILE *fin, *fout;
int n, cul, suma, maxSuma, st, len, i;
fin = fopen( "buline.in", "r" );
fscanf( fin, "%d", &n );
for ( i = 0; i < n; i++ ) {
fscanf( fin, "%d%d", &v[i], &cul );
v[i] = v[i] * semn[cul];
}
fclose( fin );
maxSuma = suma = v[0];
st = 0;
len = 1;
for ( i = 1; i < n; i++ ) {
if ( suma < 0 ) {
suma = 0;
st = i;
}
suma += v[i];
if ( suma > maxSuma ) {
maxSuma = suma;
len = i - st + 1;
}
}
i = 0;
while ( suma > 0 && i < st ) {
suma += v[i];
if ( suma > maxSuma ) {
maxSuma = suma;
len = i + 1 + n - st;
}
i++;
}
fout = fopen( "buline.out", "w" );
fprintf( fout, "%d %d %d", maxSuma, st + 1, len );
fclose( fout );
return 0;
}