Pagini recente » Cod sursa (job #505968) | Cod sursa (job #548064) | Rating Ervin Alungulesei (TheGebster1) | Istoria paginii utilizator/abductedbyaliens | Cod sursa (job #2693914)
#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, len, st, dr, 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 = dr = 0;
len = 1;
for ( i = 1; i < n; i++ ) {
if ( suma < 0 )
suma = len = 0;
suma += v[i];
len++;
if ( suma > maxSuma ) {
maxSuma = suma;
st = i - len + 1;
dr = i;
}
}
i = 0;
while ( suma > 0 && i < st ) {
suma += v[i];
if ( suma > maxSuma ) {
maxSuma = suma;
dr = i;
}
i++;
}
fout = fopen( "buline.out", "w" );
fprintf( fout, "%d %d %d", maxSuma, st + 1, (dr - st + 1 + n - 1) % n + 1 );
fclose( fout );
return 0;
}