Pagini recente » Cod sursa (job #1835552) | Cod sursa (job #1132159) | Cod sursa (job #2097455) | Cod sursa (job #87725) | Cod sursa (job #2811766)
#include <stdio.h>
FILE *fin;
int poz, valBuff;
char buff[ ( 1 << 10 ) ];
char nextChar() {
if( poz == valBuff ) {
fread( buff, 1, valBuff, fin );
poz = 0;
}
return buff[ poz++ ];
}
bool f[ 100 ];
int readInt() {
int semn = 1;
int rez = 0;
int ch;
while( !f[ ch = nextChar() ] );
if( ch == '-' ) {
ch = nextChar();
semn = -1;
}
do
rez = rez * 10 + ch - '0';
while( f[ ch = nextChar() ] );
return rez * semn;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
long long maxx, sum;
int n;
int main()
{
f[ '0' ] = f[ '1' ] = f[ '2' ] = f[ '3' ] = f[ '4' ] = 1;
f[ '6' ] = f[ '7' ] = f[ '8' ] = f[ '9' ] = f[ '5' ] = f[ '-' ] = 1;
valBuff = sizeof( buff );
int x;
fin = fopen( "ssm.in", "r" );
fread( buff, 1, valBuff, fin );
n = readInt();
maxx = (long long)readInt();
int left = 0, right = 0;
long long suma = maxx;
int l = 0, r = 0;
for( int i = 1; i < n; i++ ) {
x = readInt();
if( suma + x >= x ) {
suma += x;
++r;
} else {
suma = x;
r = l = i;
}
if( maxx < suma ) {
maxx = suma;
left = l;
right = r;
}
}
fclose( fin );
FILE *fout = fopen( "ssm.out", "w" );
fprintf( fout, "%lld %d %d\n", maxx, left + 1, right + 1 );
fclose( fout );
return 0;
}