Pagini recente » Cod sursa (job #2062655) | Cod sursa (job #229859) | Cod sursa (job #2323992) | Cod sursa (job #788132) | Cod sursa (job #2811800)
#include <stdio.h>
FILE *fin, *fout;
const int INF = 1e9;
const int BUFSIZE = 1 << 16;
int rpos;
char rbuf[BUFSIZE];
static inline int isspace(char ch) {
return ch <= ' ';
}
static inline int isdigit(char ch) {
return '0' <= ch && ch <= '9';
}
void initRead() {
rpos = BUFSIZE - 1;
for(int i = 0; i < BUFSIZE; i++) {
rbuf[i] = 0;
}
}
static inline char readChar(FILE *fin) {
if(!(rpos = (rpos + 1) & (BUFSIZE - 1)))
fread(rbuf, 1, BUFSIZE, fin);
return rbuf[rpos];
}
int readInt(FILE *fin) {
int ch, ret = 0, semn = 1;
while(!isdigit(ch = readChar(fin))) {
if(ch == '-') {
semn = -1;
}
}
do {
ret = 10 * ret + ch - '0';
} while(isdigit(ch = readChar(fin)));
return ret * semn;
}
int n, sum, sum_max = -INF, left = 1, right, idx;
int main() {
fin = fopen("ssm.in", "r"); initRead();
fout = fopen("ssm.out", "w");
n = readInt(fin);
for(int i = 1; i <= n; i++) {
int val;
val = readInt(fin);
if(sum < 0) {
sum = 0;
idx = i;
}
sum += val;
if(sum > sum_max) {
sum_max = sum;
left = idx;
right = i;
}
}
fprintf(fout, "%d %d %d\n", sum_max, left, right);
fclose(fin);
fclose(fout);
return 0;
}