Pagini recente » Monitorul de evaluare | Cod sursa (job #1568309) | Cod sursa (job #559203) | Cod sursa (job #2342455) | Cod sursa (job #540367)
Cod sursa(job #540367)
//http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.12.html
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE * out = fopen("ssm.out", "w");
FILE * in = fopen("ssm.in", "rb");
//printf("%d",BUFSIZ);
char * buffer = calloc(BUFSIZ,sizeof(char));
//setbuf(in,buffer);
size_t dim = 1028*32;
//printf("%d",dim);
setvbuf(in,NULL,_IOFBF,dim);
int n;
fscanf(in,"%d",&n);
int i;
int suma = 0;
int startIndice = -1;
int endIndice = -1;
int maxSuma = -1* (1<<16);
int maxStart = -1;
int maxEnd = -1;
for ( i=0; i<n; i++){
int k;
fscanf(in,"%d",&k);
if ( k>k+suma ){
suma = k;
startIndice = i;
endIndice = i;
} else {
suma=suma+k;
endIndice = i;
}
if ( suma>maxSuma){
maxSuma = suma;
maxStart = startIndice;
maxEnd = endIndice;
}
}
fprintf(out,"%d %d %d",maxSuma,maxStart+1,maxEnd+1);
fclose(out);
fclose(in);
}