Pagini recente » Cod sursa (job #2906491) | Cod sursa (job #2119944) | Cod sursa (job #1617808) | Cod sursa (job #1649068) | Cod sursa (job #2693934)
#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, start, 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 = start = 0;
for ( i = 1; i < n; i++ ) {
if ( suma <= 0 ) {
suma = 0;
start = i;
}
suma += v[i];
if ( suma > maxSuma ) {
maxSuma = suma;
st = start;
dr = i;
}
}
i = 0;
while ( suma > 0 && i < start ) {
suma += v[i];
if ( suma > maxSuma ) {
maxSuma = suma;
st = start;
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;
}